vs编译luasocket

下载lua

  参考:lua包管理器luarocks使用

 

下载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 - 博客园

 

posted @   yanghui01  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示