首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MSVC++ .lib文件与mingw一起使用。名称损坏

将MSVC++ .lib文件与mingw一起使用。名称损坏
EN

Stack Overflow用户
提问于 2012-01-24 04:15:48
回答 2查看 3.2K关注 0票数 4

我有静态C++库,用MSVC编译和dll文件(库名为opennurbs)。我需要在由mingw编译的项目中使用这个库(我使用的是Qt creator,但项目不使用qt库)。所以,我有一些未解决的外部问题。我认为名字混乱的问题。如何将.lib文件转换为.a库?我尝试使用nm命令,但不起作用:"No symbols in foo.dll“。外部"C“无法工作,因为它是C++库。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-24 06:56:05

一般来说,您不能从一个编译器构建的程序中使用用另一个编译器构建的C++动态链接库。名称损坏只是其中一个问题--没有针对异常处理、RTTI、内存管理甚至类布局本身的兼容性保证(特别是对于多重和虚拟继承),仅举几个潜在的问题。

一些建议(没有一个是理想的):

  • 最好的解决方案是如果你能完全避开原来的问题,要么为你的编译器获取二进制文件,要么从源代码构建(即从MinGW构建动态链接库及其客户端)。
  • 如果你可以将动态链接库的接口公开为纯C
  • ,那么就这样做。
  • 如果你想为你的动态链接库提供“面向对象”的Win32,不需要可移植性,并且准备投入必要的开发工作,提供一个COM API可能值得一看。
票数 4
EN

Stack Overflow用户

发布于 2012-01-24 05:44:52

很难确切地理解你的问题是什么,但有一个解决方案是显而易见的。openNURBS代码可以在完全许可的许可下免费获得。您只需简单地download它,并直接在mingw中编译它。

无论如何,这将是唯一可行的路线。C++没有标准的二进制接口,每个工具都有不同的二进制接口。这甚至可以在同一工具的不同版本之间有所不同。更重要的是,MSVC编译库将依赖于与您的mingw编译代码不同的C++运行时库。

因此,底线是您需要由您的mingw编译器编译openNURBS。但谢天谢地,这是可能的,因为该库是作为源代码分发的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8977971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档