c++ - 将目前作为独立可执行文件开发的 C++ 项目转换为 DLL

标签 c++ visual-studio dll

(我在 Windows 7 64 位机器上使用 Microsoft Visual Studio 2010)

我开发了一个 C++ 程序,它更像是一个随着时间的推移变得相当复杂的库。它现在作为一个简单的可执行文件工作,但我想将它转换成一个 DLL,以便其他程序可以轻松访问该功能。

我在使用 DLL 方面一点经验都没有,但我想避免在此过程中进行大量额外的工作和代码更改。

我知道我可以将编译目标选择为“DLL”,但我感觉单独做不到这一点。

  • 如果我成功地将我的项目编译成 DLL 文件,我如何从可执行项目中使用其中的函数?

  • 我能否避免使用 _dllexport 并按名称导入每个函数?

  • 如何静态链接 DLL,这样做的(缺点)优点是什么?

最佳答案

老实说,我会看一下 DLL export docs并选择最适合您的导出方法。在任何情况下,您都可以简单地从客户端应用程序中按名称引用导出的函数,就像使用静态库一样。

当您将项目构建为 DLL 时,IDE 将生成

  1. 运行时的DLL文件和
  2. 包含导出的函数解析信息的 LIB 文件 - 这就是您链接的对象。

根据定义,您不能静态链接 DLL(即 DYNAMIC 链接库)- 相反,您链接到从 DLL 导出函数的库,然后在运行时加载 DLL,或者在进程启动时或按需自动执行。也可以在没有任何静态链接的情况下完全按需加载 DLL(请参阅 LoadLibraryEx 等)。

关于c++ - 将目前作为独立可执行文件开发的 C++ 项目转换为 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5954144/

相关文章:

visual-studio - 安装 Internet Explorer 10 后,如何在 Visual Studio 2012 中调试 Silverlight 5 应用程序?

c++ - 在元函数定义中使用 mpl::vector

c++ - std::function 是否支持自定义分配器?

visual-studio - 重构要点与 Resharper

visual-studio - Web 部署不再有效

c++ - Qt5 - 未找到 Windows : VCRUNTIME140D_APP. dll

python - 如何使用 ctypes 将 python 列表传递给 C 函数 (dll)

c# - 从 Java 应用程序调用 C# dll

c++ - 如何使用 std::variant 保证复制省略?

python - python中的函数模板