从Code中的动态dll中讲述静态dll

时间:2012-12-02 18:06:21

标签: c++ dll

我目前正在c ++ VS2010中生成一个dll文件。如果我正在生成静态dll或动态dll,我有两个问题我想知道吗?在我的代码中,我有一个.def文件,所有导出的函数都在该def文件中编号。我的函数也是使用__declspec(dllexport)导出的。

2 个答案:

答案 0 :(得分:1)

生成DLL时,您将获得动态链接库。因此,独立于生成它的方法,它是动态加载的。

但是如何从cosuming应用程序访问这些功能有所不同。

使用导入库(yourDllName.LIB)时,将在加载应用程序时加载DLL。这给人一种类似的外观和感觉,就像使用静态库一样。

您还可以使用LoadLibrary和GetProcAddress来获取指向函数的指针。然后,您可以使用这些指向DLL入口点的指针调用函数。

如果选择模块导出文件(.DEF),则__declspec(dllexport)方法将函数放到导出表中并不关心。我建议使用一种方法来避免混淆。

答案 1 :(得分:-1)

在C ++代码中,您可以检查是否定义了符号_DLL。

#ifdef _DLL

在构建静态库时,我认为您不需要指定序号来运行。