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