为什么我不能在MinGW中链接64位.lib文件?

时间:2012-08-28 08:50:46

标签: c++ eclipse visual-studio mingw eclipse-cdt

我需要使用MinGW在Eclipse CDT中使用第三方.lib / .dll文件(可能是在Visual Studio中编译)。

我可以成功动态链接32位版本(使用32位MinGW)但不能使用64位版本(使用64位MinGW)。当我运行64位版本时,它在调用第三方函数时崩溃。

我需要做些什么来让64位工作吗?

谢谢, 艾伦

2 个答案:

答案 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,你现在拥有的东西是无用的。