在Windows下将静态链接库转换为动态链接库

时间:2010-10-27 16:29:38

标签: dll

我正在评估将我们的程序从30多个静态链接库更改为30多个动态链接库的好处。我们希望通过更改为DLL,它会缩短链接时间。

一个直接的问题是需要在所有类的前面添加__declspec,以便为其他要链接的dll创建lib文件。有没有办法解决这个问题?编译器中是否有一个标志强制生成lib,以便使DLL中的所有类可用于导出?如果没有,是否有任何现有的脚本/程序可以做到这一点?这肯定会使从静态链接库到动态库的转换变得更加容易。如果没有,__ declspec背后的理由是什么?为什么不选择使所有dll函数都可导出?

谢谢。

2 个答案:

答案 0 :(得分:1)

也许为时已晚,但您是否考虑过使用DEF文件?

答案 1 :(得分:0)

还有另一种方法可以解决您的问题。

您只需创建一个定义文件(.def)并导出您要共享的所有方法或类。

U还必须设置: 属性 - >链接器 - >输入 - >模块定义文件 - >添加您创建的.def文件的名称。

现在使用运行时动态链接: 在要调用导出方法的项目中,使用LoadLibrary来获取Dll的句柄并使用GetProcAddress调用所需的方法。