是否有关于如何使用MinGW工具链转换/使用VC ++库的指南?
答案 0 :(得分:2)
答案 1 :(得分:1)
如果库二进制接口公开为仅C接口,并以.dll形式提供,则可以在mingw编译的程序中使用VC库而无需任何转换(我不知道VC .lib文件与mingw工具链兼容。)
如果没有C级接口,则需要库的源代码,因为必须使用g ++编译库。原因是g ++和VC之间没有共同的ABI¹。
ABI(应用程序二进制接口)定义了C ++的技术低级细节。它处理名称被破坏的方式,如何调用函数,异常系统如何工作以及许多其他东西。 ABI不是由C ++标准定义的,因此(几乎)每个编译器供应商都创建了自己的。这些ABI不可互换,因此您不能混合使用不同编译器生成的二进制文件(.o / .obj和.a / .lib文件)。事实上情况更糟糕的是,您甚至无法通过不同版本的一个编译器创建可靠的交换二进制文件,或者使用相同的编译器创建,但具有不同的编译器选项(如一个二进制文件,另一个没有异常处理)。