(我在 Windows 7 64 位机器上使用 Microsoft Visual Studio 2010)
我开发了一个 C++ 程序,它更像是一个随着时间的推移变得相当复杂的库。它现在作为一个简单的可执行文件工作,但我想将它转换成一个 DLL,以便其他程序可以轻松访问该功能。
我在使用 DLL 方面一点经验都没有,但我想避免在此过程中进行大量额外的工作和代码更改。
我知道我可以将编译目标选择为“DLL”,但我感觉单独做不到这一点。
如果我成功地将我的项目编译成 DLL 文件,我如何从可执行项目中使用其中的函数?
我能否避免使用 _dllexport 并按名称导入每个函数?
如何静态链接 DLL,这样做的(缺点)优点是什么?
最佳答案
老实说,我会看一下 DLL export docs并选择最适合您的导出方法。在任何情况下,您都可以简单地从客户端应用程序中按名称引用导出的函数,就像使用静态库一样。
当您将项目构建为 DLL 时,IDE 将生成
- 运行时的DLL文件和
- 包含导出的函数解析信息的 LIB 文件 - 这就是您链接的对象。
根据定义,您不能静态链接 DLL(即 DYNAMIC 链接库)- 相反,您链接到从 DLL 导出函数的库,然后在运行时加载 DLL,或者在进程启动时或按需自动执行。也可以在没有任何静态链接的情况下完全按需加载 DLL(请参阅 LoadLibraryEx 等)。
关于c++ - 将目前作为独立可执行文件开发的 C++ 项目转换为 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5954144/