Sta*_*ark 1 c++ dll dynamic-linking visual-studio
要链接静态库,我必须从 .h 和 .c 文件创建 .lib。然后我将其添加到我的项目中,放入附加依赖项并进行编译。
要使用 dll,我需要 .dll 和 .lib。这个.lib和上面的一样还是不一样?如何让 Visual Studio 使用 .dll 和 .lin,而不仅仅是 .lib?我将 .dll 放入项目目录中,但没有任何更改(.exe 具有相同的大小(我认为应该更小))。
当您编译 DLL 项目时,您将获得一个 DLL 和一个 LIB 文件作为输出。DLL 包含实际的库代码;LIB 文件包含导出函数的存根,帮助链接器发出代码来调用该 DLL。
\n\n这与编译静态库时获得的 LIB 文件有很大不同。该LIB 文件包含组成该库的所有目标代码。当您构建它时,所有此类代码都会直接链接到您的可执行文件\xe2\x80\x94,因此名称的“静态”部分。
\n\n然而,实际的使用方式非常相似。无论您链接到动态库还是静态库,您都将链接器(使用“附加依赖项”)指向 LIB 文件。链接器完成剩下的工作;它可以从 LIB 文件中得知它应该做什么。
\n\n当然,您必须确保它是正确的 LIB 文件。将两个项目(DLL 和 EXE)放在同一个解决方案中将允许您使用项目引用,从而使任务基本上万无一失。
\n\n编辑:当您构建 DLL 时,您当然不会获得 LIB 文件,除非 DLL 导出函数。(如果它不导出任何函数,则该 DLL 的客户端无法调用任何内容,因此没有必要使用 LIB 文件!)安排从 DLL 导出函数的最简单方法DLL就是使用__declspec(dllexport)
注解的。如果与宏结合使用,您可以将其解析为__declspec(dllimport)
消费者端,从而允许您使用相同的头文件来构建 DLL 并从应用程序使用它。有关更多信息,请参阅我的回答。或者,您可以使用带有“EXPORTS”部分的 DEF 文件。
归档时间: |
|
查看次数: |
7666 次 |
最近记录: |