utils.platform
此模块用于一些平台相关的辅助操作接口
utils.platform.gnu2mslib
- 将 mingw 的 libxxxdll.a 转换成 msvc 的 xxx.lib 库
函数原型
API
lua
gnu2mslib(outputlib: <string>, inputfile: <string>, options: <table>)参数说明
| 参数 | 描述 |
|---|---|
| outputlib | 必需。输出的 .lib 文件路径 |
| inputfile | 必需。输入的 .dll.a 或 .def 文件路径 |
| options | 可选。选项参数,支持以下选项: - dllname - DLL 文件名- arch - 架构(如 "x64") |
返回值说明
无返回值
用法说明
这个功能对 Fortran & C++ 混合项目特别有帮助,因为 VS 不提供fortran编译器,只能用MinGW的gfortran来编译fortran部分,然后和VS的项目链接。 往往这样的项目同时有一些其他的库以vs格式提供,因此纯用MinGW编译也不行,只能使用这个功能来混合编译。
而 cmake 也有个类似的 GNUtoMS。
相关 issues 见:#1181
lua
import("utils.platform.gnu2mslib")
gnu2mslib("xxx.lib", "xxx.dll.a")
gnu2mslib("xxx.lib", "xxx.def")
gnu2mslib("xxx.lib", "xxx.dll.a", {dllname = "xxx.dll", arch = "x64"})支持从 def 生成 xxx.lib ,也支持从 xxx.dll.a 自动导出 .def ,然后再生成 xxx.lib
如果不想自动从dll.a生成 def,想借用 gnu linker 生成的 def,那就自己通过 add_shflags("-Wl,--output-def,xxx.def") 配置,生成 def,然后传入 def 到这个接口。。
{dllname = xxx, arch = "xxx"} 这些是可选的,根据自己的需求而定。。
也可以直接 xmake l utils.platform.gnu2mslib xxx.lib xxx.dll.a 快速测试验证