【发布时间】:2017-11-28 22:08:03
【问题描述】:
我们目前正在将跨平台(linux、osx、w32)项目的 W32 构建过程从 VisualStudio 切换到 mingw。
我们面临的一个问题是,我们的项目创建了一个动态库 (foo.dll),第 3 方项目可以链接到该库。要在 W32/MSVC 上工作,需要导入库 (foo.lib)。
现在,按照the documentation,创建一个包含导入库所需的所有信息的 .def 文件非常容易:
gcc -shared -o foo.dll foo-*.o -Wl,--output-def,foo.def
为了使用foo.def 文件,文档告诉我使用Microsoft LIB 工具从它构建foo.lib:
lib /machine:i386 /def:testdll.def
这显然需要我在构建计算机上安装(一部分)MSVC。 但是,我们想在我们的 linux 系统上交叉编译整个东西(甚至可能在某些 CI 上),这使得 MSVC 的安装相当乏味。
所以我想知道,是否有本地 MinGW 方法将 foo.def 文件转换为 foo.lib 导入库?
(我们知道到最后,只有 MSVC 用户会需要导入库,并且他们手边会准备好 lib 工具。但是,由于我们一直提供foo.lib 文件,切换到 foo.def 会破坏第 3 方构建系统——这是我们希望避免的)。
【问题讨论】:
标签: visual-c++ cross-compiling mingw-w64 import-libraries