当您的外部 SDK 只有 .dll、.lib、.h 文件时如何链接和构建项目

Posted

技术标签:

【中文标题】当您的外部 SDK 只有 .dll、.lib、.h 文件时如何链接和构建项目【英文标题】:How to link and built a project when your external SDK only has .dll, .lib, .h files 【发布时间】:2017-11-21 00:59:38 【问题描述】:

我有一个仅包含 .dll、.lib 和 .h 文件的外部 SDK。我正在尝试使用 SDK。 dll 中没有任何内容是可读的,但 .h 文件有一些关于方法的 cmets。 我不是很精通C++。我假设我需要加载库,然后使用 .h 文件中定义的方法从 dll 中读取。对吗?

我需要知道如何编写一个 cpp 项目,我可以在其中链接所有这些文件、读取 dll 并能够使用 sdk 中定义的方法。 是否有一个带有项目设置的测试项目,我可以在其中看到如何做到这一点? 任何帮助将不胜感激。

【问题讨论】:

您可能只需要链接库和头文件,并将dll放在应用程序目录中。你用的是什么SDK?这可能会有所帮助。 简单。在源代码中包含头文件,就像包含任何其他头文件一样。链接时链接lib文件。将 dll 放在与可执行文件相同的目录中。就是这样。 【参考方案1】:

有几种方法可以实现这一点,包括使用 #pragma 的快捷方法,我会推荐它,以免你养成不良习惯。

同样,您可以使用 属性表,但一开始可能会有点难以接受。因此,我将为您提供标准的中间路线……

在您的项目设置中(Alt-F7 或 Project > Properties...),您需要设置以下选项:

C/C++ > 常规 > 附加包含目录

使用#include 指令时添加要搜索的文件夹。无需将个人喜好和风格考虑复杂化,只需将其设置为 SDK 头文件所在的目录即可。

您可以使用绝对或相对路径、环境变量。任何。我现在建议你只使用绝对路径。

链接器 > 常规 > 其他库目录

与上面相同,但这是 .lib 文件所在的位置。

链接器 > 输入 > 附加依赖项

这是您的 lib 文件的名称。

现在,如果您在项目的源代码中#include SDK 的头文件并进行编译,它应该可以正常工作。并且链接步骤也应该成功。

如果没有,您可能需要做一些额外的事情来使 SDK 运行良好(例如预处理器定义、编译器设置或其他依赖项)。

您需要担心的最后一件事是运行程序可能会失败,因为找不到 DLL,除非它位于 Windows 搜索的特定位置。您可以使用 构建后事件 将 DLL 复制到构建可执行文件的同一目录,而不是弄乱 DLL 搜索路径等。

不过,在项目属性中:

构建事件 > 构建后事件

添加类似的命令行:

copy "\Path\To\MySDK\MySDK.dll" "$(OutDir)\"

现在你应该准备好了,不用再考虑了!

【讨论】:

谢谢!你救了我!几乎只是为了补充这个答案,我意识到通过这种方法我不再需要使用 LoadLibrary() 了!

以上是关于当您的外部 SDK 只有 .dll、.lib、.h 文件时如何链接和构建项目的主要内容,如果未能解决你的问题,请参考以下文章

如何将外部库添加到 QT?

c语言怎么调用dll文件

知道DLL的.h文件怎么 调用dll类里的函数

springboot java调用海康威视sdk 打包成jar后无法引用dll的问题

如何将外部 dll 库导入 Borland C++ 6?

链接 .h .lib 和 .dll