我有静态C++库,用MSVC编译和dll文件(库名为opennurbs)。我需要在由mingw编译的项目中使用这个库(我使用的是Qt creator,但项目不使用qt库)。所以,我有一些未解决的外部问题。我认为名字混乱的问题。如何将.lib文件转换为.a库?我尝试使用nm命令,但不起作用:"No symbols in foo.dll“。外部"C“无法工作,因为它是C++库。
发布于 2012-01-24 06:56:05
一般来说,您不能从一个编译器构建的程序中使用用另一个编译器构建的C++动态链接库。名称损坏只是其中一个问题--没有针对异常处理、RTTI、内存管理甚至类布局本身的兼容性保证(特别是对于多重和虚拟继承),仅举几个潜在的问题。
一些建议(没有一个是理想的):
发布于 2012-01-24 05:44:52
很难确切地理解你的问题是什么,但有一个解决方案是显而易见的。openNURBS代码可以在完全许可的许可下免费获得。您只需简单地download它,并直接在mingw中编译它。
无论如何,这将是唯一可行的路线。C++没有标准的二进制接口,每个工具都有不同的二进制接口。这甚至可以在同一工具的不同版本之间有所不同。更重要的是,MSVC编译库将依赖于与您的mingw编译代码不同的C++运行时库。
因此,底线是您需要由您的mingw编译器编译openNURBS。但谢天谢地,这是可能的,因为该库是作为源代码分发的。
https://stackoverflow.com/questions/8977971
复制相似问题