我需要使用MinGW在Eclipse CDT中使用第三方.lib / .dll文件(可能是在Visual Studio中编译)。
我可以成功动态链接32位版本(使用32位MinGW)但不能使用64位版本(使用64位MinGW)。当我运行64位版本时,它在调用第三方函数时崩溃。
我需要做些什么来让64位工作吗?
谢谢, 艾伦
答案 0 :(得分:2)
我的解决方案是针对32位版本的32位 .lib 文件和64位版本的64位 .dll 文件进行链接
我仍然不确定不一致的来源,所以欢迎任何评论。
艾伦
答案 1 :(得分:0)
与GCC(MinGW)相比,Microsoft Visual Studio使用不同的ABI集。
要做到这一点并不容易,许多项目和图书馆为Windows提供了2个版本的Windows版本,仅用于解决此问题,一个用于MSVS,另一个用于MinGW。
C ++ ABI有所不同,但是C语言有一个共同的ABI集,一个技巧包括使用extern C
关键字并尝试以 C方式使用C ++代码和将其链接为C代码。
你的问题的答案是否定的,你可以尝试一些技巧,但没有标准的ABI,并且无法保证这项工作。
无论哪种方式,你需要访问你的库的源代码,至少尝试一些东西或使用MinGW重新编译库,你也可以尝试向开发人员发送一封电子邮件,可能在Windows和Windows下可能不知道这个问题要求提供此库的不同版本。如果没有Visual Studio,你现在拥有的东西是无用的。