2011-06-06 30 views
1

我想创建一个使用RAPI的.dll(使用C++)。为此,我创建了visual studio项目,然后将其他包含目录设置到需要“rapi2.h”的位置,并将其他链接目录设置到rapi.lib所在的位置。在运行时需要lib包含的dll吗?

然后我用我创建的.dll文件编写另一个应用程序。此方法工作正常,但在运行时我需要rapi.dll存在于运行我的应用程序的计算机上。

有什么办法可以将.dll添加到另一个.dll中,而第一个在运行时不需要?

也许这是一个初学者的问题,但为什么我需要在运行时的DLL,但在编译就足够了只有.lib和.h关联?

+0

'lib'并不意味着一个静态链接 - 它可以用于静态链接和动态链接。这仅仅是为了解决参考。 – Mehrdad 2011-06-06 15:37:56

回答

2

您需要了解dynamic linking and static linking之间的区别。在你的情况下,该库只是一个导入库,并不包含实际的可执行代码。这在运行时动态链接。

+0

我看了文章。事情现在更清楚了。我该如何使用visual studio进行静态链接呢? – 2011-06-06 15:54:39

+0

如果提供静态库,则只能静态链接。例如,如果有一个rapi.lib导入库和一个rapi.lib静态库(包含rapi.dll中的代码)。通常这不是在Windows上完成的。如果您正在调用的代码仅在rapi.dll中,那么除非您自己重写所有导出的函数,否则别无选择,只能使用该.dll。 – ribram 2011-06-06 15:58:42

+0

现在都清楚了,即使导入库和静态库的区别也是如此。非常感谢! – 2011-06-06 16:01:49

相关问题