我目前正在 c++ VS2010 中生成一个 dll 文件。我有两个问题想知道我当前是在生成静态 dll 还是动态 dll ?在我的代码中,我有一个 .def 文件,所有导出的函数都在该 def 文件中编号。我的函数也正在使用 __declspec(dllexport) 导出。
问问题
110 次
2 回答
1
当您生成一个 DLL 时,您将获得一个动态链接库。所以独立于你生成它的方法,它是动态加载的。
但是从消费应用程序访问功能的方式有所不同。
当您使用导入库 (yourDllName.LIB) 时,DLL 将在您的应用程序加载时加载。这提供了与使用静态库类似的外观和感觉。
您还可以使用 LoadLibrary 和 GetProcAddress 获取指向函数的指针。然后您可以使用这些指向 DLL 入口点的指针调用您的函数。
如果您选择模块导出文件 (.DEF) 或 __declspec(dllexport) 方法将函数放入导出表,则无关紧要。我建议使用一种方法来避免混淆。
于 2012-12-02T18:26:44.107 回答
-1
在您的 C++ 代码中,您可以检查是否定义了符号 _DLL。
#ifdef _DLL
我认为在构建静态库时不需要分配序数来运行。
于 2012-12-02T18:34:05.080 回答