vs编译luasocket
下载lua
下载luasocket
lunarmodules/luasocket: Network support for the Lua language, 下载源码并解压

编译源码
1) 修改Lua.props文件,主要是修改$(LUAV), $(LUALIB), $(LUAINC)等visual studio中会用到的变量
修改后:
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Condition="'$(Platform)'=='x64'" Label="LuaPlat"> <LUAPLAT>$(Platform)/$(Configuration)</LUAPLAT> <LUALIB>C:\_softs\lua-5.1.5_Win64_dll17_lib</LUALIB> <LUACDIR>C:\_softs\lua51_x64</LUACDIR> <LUALDIR>C:\_softs\lua51_x64\lua</LUALDIR> <LUAINC>C:\_softs\lua-5.1.5_Win64_dll17_lib\include</LUAINC> </PropertyGroup> <PropertyGroup Condition="'$(Platform)'=='Win32'" Label="LuaPlat"> <LUAPLAT>$(Configuration)</LUAPLAT> <LUALIB></LUALIB> <LUACDIR></LUACDIR> <LUALDIR></LUALDIR> <LUAINC></LUAINC> </PropertyGroup> <PropertyGroup Label="UserMacros"> <LUAV>5.1.5</LUAV> <LUALIBNAME>lua5.1.lib</LUALIBNAME> </PropertyGroup> <PropertyGroup> <_PropertySheetDisplayName>Lua</_PropertySheetDisplayName> </PropertyGroup> <ItemDefinitionGroup /> <ItemGroup> <BuildMacro Include="LUAPLAT"> <Value>$(LUAPLAT)</Value> </BuildMacro> <BuildMacro Include="LUAV"> <Value>$(LUAV)</Value> </BuildMacro> <BuildMacro Include="LUALIB"> <Value>$(LUALIB)</Value> </BuildMacro> <BuildMacro Include="LUAINC"> <Value>$(LUAINC)</Value> </BuildMacro> <BuildMacro Include="LUACDIR"> <Value>$(LUACDIR)</Value> </BuildMacro> <BuildMacro Include="LUALDIR"> <Value>$(LUALDIR)</Value> </BuildMacro> <BuildMacro Include="LUALIBNAME"> <Value>$(LUALIBNAME)</Value> </BuildMacro> </ItemGroup> </Project>
2) 打开luasocket.sln,这边用的是vs2017
上面的变量在vs中叫做宏

3) 点击菜单 -> 生成 -> 重新生成解决方案,出现下面的错误
原因:没装Win 8.1的 SDK,我的vs只装了Win 10的

解决办法:改成Win 10的SDK
项目上右键 -> 点击属性,找到常规,socket和mime这两个项目都要改一下。

4) 再重新生成解决方案,出现下面的错误
原因:两个项目的pdb生成位置一样了

解决办法:改成不一样的pdb生成位置,mime和socket项目都要改成:$(IntDir)$(ProjectName)\$(TargetName)$(PlatformToolsetVersion).pdb
. 
5) 再重新生成解决方案就可以了

编译后生成的文件

测试luasocket
1) 打开rockspecs/luasocket-3.1.0-1.rockspec文件,看下里面的lua文件的组织方式

将src中的ltn12.lua, socket.lua, mime.lua拷贝到luasocket_test/lua/下,其余的lua文件拷贝到luasocket_test/lua/socket下

2) 将生成的dll文件拷贝到luasocket_test/lib/mine/core.dll, luasocket_test/lib/socket/core.dll

3) 在luasocket_test下新建测试脚本temp.lua
package.path = package.path..";./lua/?.lua" package.cpath = package.cpath..";./lib/?.dll" local socket = require("socket") print(socket._VERSION) local http = require("socket.http") -- 发起 GET 请求 local response_body, response_code, response_headers = http.request("http://httpbin.org/get") print("Response Code: " .. response_code) print("Response Body:") print(response_body)
打开命令行,运行脚本

参考
Windows环境下,luasocket的编译及使用。visual studio 2019工程的自定义宏修改。luasocket引用环境搭建,及测试例子。_哔哩哔哩_bilibili
错误 C1041 无法打开程序数据库“xxx\Debug\core142.pdb”_严重性代码说明项目文件行禁止显示状态 错误c1041无法打开程序数据库“c:-CSDN博客
error C1041: 无法打开程序数据库“xxx\vc140.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用/FS - DylanYeung - 博客园

浙公网安备 33010602011771号