0

两个(相当旧的)库是用 C 编写的,最初是用 MSVC 6 编译的。我想改变它并开始使用 mingw。

编辑:该库看起来正在使用 __stdcall 调用约定。

因此,首先构建库“a”,然后通过 MSVC 6 生成包含 a.def 的 a.lib 和 a.dll。然后构建库 b 并使用库:a.lib。

我成功地用mingw构建了a.dll。但我不知道如何构建一个.lib 文件?另一个要求是我需要完全使用 MinGW 工具或其他(免费)解决方案来完成这项工作。

另一个问题是,如果我们假设代码完全用 C 语言完成,mingw 库会与 msvc 混合搭配吗?谢谢。

4

1 回答 1

0

MinGW 可以做而 MSVC 不能做的一件事是直接链接到 DLL - 换句话说,MinGW 不需要导入库。只需将 DLL 作为输入传递给 MinGW 链接器,这应该与使用导入库一样好。

通常,无论是由哪个工具创建的,MSVC 或 MinGW 都应该可以使用 C 语言 DLL 导出。但是,有些极端情况可能无法正常工作。在我的脑海中,ABI 在如何返回结构方面存在一些差异,并且在处理某些浮点类型的方式上可能存在一些差异。我遇到的大多数 DLL API 都不做这些事情,但可能还有其他一些我没有考虑或意识到的极端情况。

于 2013-04-03T18:50:29.080 回答