gpt4 book ai didi

c++ - 如何在 visual studio 中链接 dll?

转载 作者:行者123 更新时间:2023-11-30 01:43:25 28 4
gpt4 key购买 nike

要链接静态库,我必须从 .h 和 .c 文件创建 .lib。然后我将它添加到我的项目中,放入附加依赖项并编译。

要使用 dll,我需要 .dll 和 .lib。这个.lib和上面的是一样的还是不一样的?如何让 Visual Studio 使用 .dll 和 .lin,而不仅仅是 .lib?我将 .dll 放入项目目录,但没有任何变化(.exe 具有相同的大小(我认为应该更小))。

最佳答案

当您编译一个 DLL 项目时,您将得到一个 DLL 和一个 LIB 文件作为输出。 DLL 包含实际的库代码; LIB 文件包含用于帮助链接器发出代码以调用该 DLL 的导出函数的 stub 。

这和编译静态库得到的LIB文件有很大区别。 那个 LIB 文件包含构成库的所有目标代码。当您构建可执行文件时,所有此类代码都会直接链接到您的可执行文件中——因此是名称的“静态”部分。

但是,实际使用方式非常相似。无论您是链接到动态库还是静态库,您都将链接器(使用“附加依赖项”)指向 LIB 文件。链接器完成剩下的工作;它可以从 LIB 文件中判断它应该做什么。

当然,您必须确保它是正确的 LIB 文件。在同一个解决方案中同时拥有两个项目(DLL 和 EXE)将允许您使用项目引用,从而使任务基本上万无一失。

编辑:当您构建 DLL 时,您当然不会获得 LIB 文件,除非 DLL 导出函数。 (如果它不导出任何函数,则该 DLL 的客户端没有任何可调用的内容,因此没有理由使用 LIB 文件!)安排从 DLL 导出函数的最简单方法是使用 __declspec(dllexport) 注释。如果与宏结合使用,您可以安排它在使用者端解析为 __declspec(dllimport),从而允许您使用相同的头文件来构建 DLL 并从应用程序中使用它。在我的回答中有更多信息 here .或者,您可以使用 a DEF file with an "EXPORTS" section .

关于c++ - 如何在 visual studio 中链接 dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37860614/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com