使用mingw和msys将VC++库转换为mingw库?

3

有没有关于如何将VC++库与MinGW工具链转换/使用的指南?


1
只是为了澄清一下:看起来你提供的链接已经回答了“如何为MinGW编译freeglut”的问题。那么你的问题只是“如何将vc++库转换为MinGW库”吗?也就是说,整个OpenGL/Freeglut场景只是一个例子,而不是问题的一部分? - Bart
是的,只是一个例子。抱歉我应该表达得更清楚。 - silent
2个回答

2

看起来MinGW的人们有一个关于此事的常见问题解答页面

简短回答:不太可能。

详细回答:对于DLL,也许可以。


1

C接口

如果库的二进制接口只以C接口暴露,并以.dll提供,则您可以在mingw编译的程序中使用VC库,无需进行任何转换(我不知道VC .lib文件是否与mingw工具链兼容)。

C++接口

如果没有C级别的接口,您需要库的源代码,因为您必须使用g ++编译库。原因是g ++和VC之间没有通用的ABI¹。

¹ABI

ABI(应用程序二进制接口)定义了C ++的技术低级细节。它处理名称的缩略语方式,如何调用函数,异常系统的工作原理等许多其他内容。 ABI不由C ++标准定义,因此(几乎)每个编译器供应商都创建了自己的ABI。这些ABI不可互换,因此您不能混合不同编译器生成的二进制文件(.o / .obj和.a / .lib文件)。实际上,情况更糟,您甚至无法可靠地交换由同一编译器的不同版本创建的二进制文件,或者使用相同编译器但使用不同编译器选项(例如一个带有,另一个不带有异常处理的二进制文件)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接