【问题标题】:How To Deploy a C++ DLL如何部署 C++ DLL
【发布时间】:2023-03-15 10:51:01
【问题描述】:

我在 Visual Studio Community 2017 中编写了一个 dll。用作通用库。它可以理想地用于任何编译器的任何 c++ 程序。 我将如何最好地部署它。 (安装人员)

在 Visual Studio 中,我可以简单地添加项目并通过我的 IDE 中的设置来引用它,但要让它在任何 IDE 中工作,我应该使用哪种安装程序项目,应该包含哪些所有文件以及如何包含。

【问题讨论】:

  • 如果您希望您的库在尽可能多的平台/系统/编译器中使用,请将其开源并使用 CMake 作为构建系统。
  • 为什么是 dll?你能把它变成一个静态库吗?
  • 就算是静态库你怎么部署
  • 作为 静态 库,代码成为可执行文件的一部分。无需部署静态库。
  • 我不是在部署一个可执行文件,而是一个可用于多个可执行文件的库

标签: c++ dll installation


【解决方案1】:

您不能为所有编译器部署 C++ DLL。 C++ 没有 ABI。甚至 MSVC++ 都无法跨版本兼容,更不用说来自不同供应商的编译器了。

二进制兼容性的 Windows 解决方案是 COM。方便的是,MSVC++ 将对继承自 IUnknown 的类使用 COM ABI,尽管您还必须遵守其他 COM 规则才能完全兼容。例如。你不能依赖dynamic_cast,你需要QueryInterface

【讨论】:

  • 不久前不得不使用 COM。丑陋的 API... 如果转换不是太复杂,我个人更喜欢创建一个与 C 兼容的库接口(@98​​7654324@ 用于导出函数)。使移植到其他系统也更加容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
相关资源
最近更新 更多