链接器错误"... .obj : error LNK2019: unresolved external symbol referenced in function"

Linker error "... .obj : error LNK2019: unresolved external symbol referenced in function"

本文关键字:symbol external function referenced unresolved in error 错误 obj 链接 LNK2019      更新时间:2023-10-16

我已经阅读了相同链接器问题的所有以前的回复或解决方案。我知道链接器无法访问具有定义的函数的库文件,但我仍然没有解决它的运气!

错误:

1>trial_12th.obj : error LNK2019: unresolved external symbol _viStatusDesc@12 referenced in function _main
1>trial_12th.obj : error LNK2019: unresolved external symbol _viClose@4 referenced in function _main
1>trial_12th.obj : error LNK2019: unresolved external symbol _viRead@16 referenced in function _main
1>trial_12th.obj : error LNK2019: unresolved external symbol _viWrite@16 referenced in function _main
1>trial_12th.obj : error LNK2019: unresolved external symbol _viOpen@20 referenced in function _main
1>trial_12th.obj : error LNK2019: unresolved external symbol _viOpenDefaultRM@4 referenced in function _main
1>C:Users41kchoudharyDocumentsVisual Studio 2010Projectstrial_12thDebugtrial_12th.exe : fatal error LNK1120: 6 unresolved externals

我正在尝试从混合信号示波器发送和接收数据。在这样做时,我需要使用使用Microsoft Visual Studio c++定义的预定义命令/函数编写.cpp文件。我已经阅读了使用这些命令的用户手册,并且我也有实现它所需的头文件和库。

我使用以下代码:

#include <visa.h>
#include "stdafx.h"
#include <stdio.h>
#include <memory.h>
int main(int argc, char* argv[])
{
     ViSession rm = VI_NULL, vi = VI_NULL;
     ViStatus status;
     ViChar buffer[256];
     ViUInt32 retCnt;
     // Open a default session
     status = viOpenDefaultRM(&rm);
     if (status < VI_SUCCESS) goto error;
     // Open the GPIB device at primary address 1, GPIB board 8
     status = viOpen(rm, "USB::0x0699::0x0377::C011104::INSTR", VI_NULL, VI_NULL,
     &vi);
     if (status < VI_SUCCESS) goto error;
     // Send an ID query.
     status = viWrite(vi, (ViBuf) "*idn?", 5, &retCnt);
     if (status < VI_SUCCESS) goto error;
     // Clear the buffer and read the response
     memset(buffer, 0, sizeof(buffer));
     status = viRead(vi, (ViBuf) buffer, sizeof(buffer), &retCnt);
     if (status < VI_SUCCESS) goto error;
     // Print the response
     printf("id: %sn", buffer);
     // Clean up
     viClose(vi); // Not needed, but makes things a bit more
     // understandable
     viClose(rm); // Closes resource manager and any sessions
     // opened with it
     return 0;
     error:
         // Report error and clean up
             viStatusDesc(vi, status, buffer);
             fprintf(stderr, "failure: %sn", buffer);
             if (rm != VI_NULL) {
                 viClose(rm);
             }
             return 1;
}

您需要添加其中一个visa32。Lib或visa64。Lib到您的链接器设置。

一种方法是在编译器源文件中使用一个pragma:
#pragma comment(lib,"visa32.lib")

如果仍未找到,则调整IDE中的lib路径或在pragma中包含完整路径。

我也有同样的问题。我算出你必须加上visa32。在项目的链接器属性下的附加依赖项中的Lib

去你的

项目属性->链接器→附加依赖项→点击向下箭头->"编辑→类型visa32.lib

点击确定,确定