我们目前正在将跨平台(linux、osx、w32)项目的 W32 构建过程从 VisualStudio 切换到 mingw。
我们面临的一个问题是,我们的项目创建了一个动态库 ( foo.dll
),第 3 方项目可以链接到该库。为了在 W32/MSVC 上工作,需要一个导入库 ( foo.lib
)。
现在,按照文档很容易创建一个 .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
会破坏 3rd 方构建系统 - 我们想避免)。