c++ - 使用由 ".h"、 ".lib"和 ".dll"文件组成的第三方库

标签 c++ dll header include .lib

所以目前我正在尝试使用 National Intruments 和 IVI Foundation 的 VISA 库来读取/写入各种外部设备的命令。

我对我的 IDE 比较陌生:Microsoft Visual C++ Express 2010,这是我第一次尝试使用需要超过 .h 导入的第三方库。

基本上我有一个包含 3 个头文件的目录,一个包含 3 个 .lib 库的目录和一个包含 7 个 DLL 的目录。他们没有关于任何单个文件的功能的文档,只有整个库。因此,我需要能够获取与我的项目关联的所有这些文件。

目前,我已将所有头文件导入到我的头文件中,并将头目录添加到项目属性的包含目录中。我还将包含 .lib 文件的目录添加到项目属性中的库目录中。我假设 .lib 文件会链接到 DLL,但显然情况并非如此,因为我遇到了错误:

VISA Console 2.obj : error LNK2019: unresolved external symbol _viOpenDefaultRM@4 referenced in function _wmain

使用库中的任何函数时都会发生此错误。这是我目前的代码:

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    ViStatus status;
    ViSession defaultRM, instr;

    status = viOpenDefaultRM(&defaultRM);

    return 0;
}

项目将在我注释掉 viOpenDefaultRM 命令时生成,因此我认为这意味着我可以使用库中的对象而不是命令。因为我有 3 个构建得很好的对象声明。

好的,这就是我的全部信息,希望有人能提供帮助,也希望这对其他人有帮助!

最佳答案

除了将 .lib 文件的目录添加到库目录属性之外,您还需要添加链接器应搜索的实际库。

将库添加到项目的

 Configuration Properties | Linker | Input | Additional Dependencies

字段。

DLL 不是构建过程所必需的,但要运行程序,它们应该位于 PATH 的目录中或与程序文件位于同一目录中。

关于c++ - 使用由 ".h"、 ".lib"和 ".dll"文件组成的第三方库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13976745/

相关文章:

c - 使用 gcc 包含目录未正确链接

c++ - QT exec() 命令崩溃

c++ - 求所有整数 1 到 N 的最大奇数之和

java - Java 运行时环境检测到 fatal error - .EXCEPTION_ACCESS_VIOLATION

dll - 从 DLL 导出生成 header

c#如何循环遍历HttpRequestHeaders的所有 header

html 100% 宽度页眉和页脚

c++ - 两个具有共享缓冲区的等待线程(生产者/消费者)

c++ - 包装非托管 C++ 类以便 .Net 托管客户端应用程序可以使用它们的最佳方法是什么?

language-agnostic - 可以在 Mac OS X 上使用 DYLD_LIBRARY_PATH 吗?还有,它的动态库搜索算法是什么?