gpt4 book ai didi

c++ - 消除 C++ 动态库的编译器间不兼容问题

转载 作者:搜寻专家 更新时间:2023-10-31 02:01:12 25 4
gpt4 key购买 nike

...,跟进 this .

根据我对我的引用问题的回答,我了解到:

  • 不同的编译器使用不同的名称修饰,导致无法在编译器B构建的项目中使用编译器A构建的C++动态库,
  • 库可以构建为静态保存,包括项目中的 n 个头文件和源文件或导出符号。 (它仍然不会保存重建库以用于不同的编译器。)

根据上述内容仔细研究 SDL,我意识到它的链接有两层:在我的 SDL 项目中,我静态链接到 libSDL.a,而后者又将动态链接针对 SDL.dll,从而消除了针对不同编译器的不同 .dll 版本的需要。

问题是这是否真的是这种情况以及问题的可行解决方案,还是我遗漏了什么(以及什么)?

最佳答案

我觉得你的做法是对的。我会这样说:

  • 要让一个 dll 可以被不同的编译器使用,它必须只包含 C 函数(它们可以使用使用 extern C 的 C++ 编译器编译)
  • 和dll一样,可以使用静态导入库,这样就可以直接调用dll中的函数,而不需要按名称加载
  • 您可以使用一个包装器库来代替常规导入库,将 dll 的 C 函数包装在 C++ 类和函数中

关于c++ - 消除 C++ 动态库的编译器间不兼容问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/956310/

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