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 - 博客园
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性