gpt4 book ai didi

c++ - 将 MSVC++ .lib 文件与 mingw 一起使用。名称修改

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:48 25 4
gpt4 key购买 nike

我有静态 C++ 库,用 MSVC 和 dll 文件编译(称为 opennurbs 的库)。我需要在项目中使用这个库,由 mingw 编译(我使用 Qt creator,但项目不使用 qt 库)。所以,我有 Unresolved external 问题。我认为名称修改有问题。如何将 .lib 文件转换为 .a 库?我尝试使用 nm 命令,但它不起作用:“foo.dll 中没有符号”。Extern "C"不起作用,因为它是 C++ 库。

最佳答案

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

一些建议(都不理想):

  • 最好的解决方案是,如果您可以完全回避原始问题并为您的编译器获取二进制文件或从源代码构建(即在您的情况下从 MinGW 构建 DLL 及其客户端)。
  • 如果您可以将 DLL 的接口(interface)公开为纯 C API,那就去做吧。例如。 Win32 是“C API”,适用于各种编译器,而不仅仅是 C/C++。
  • 如果您希望为您的 DLL 使用“面向对象”的 API,不需要可移植性并且准备投入必要的开发工作,那么提供 COM API 可能值得一看。

关于c++ - 将 MSVC++ .lib 文件与 mingw 一起使用。名称修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8977971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com