0

我尝试将 LabCVI 项目移植到 MSVS 2010 C++ Express。有一行代码如下所示:

if (InitCVIRTE == 0) return 0;

发生链接器错误:LNK2019 "_InitCVIRTEEx@12" - 所有相关标头都已包含 cpp 语句:

#ifdef __cplusplus 
extern "C" {
#endif
...
#ifdef __cplusplus
}
#endif

我将错误追溯到这些片段,我为您组合了这些片段:

#define CVIFUNC __stdcall
int CVIFUNC InitCVIRTEEx (void *hInstance, char *argv[], void *reserved);
#define InitCVIRTE InitCVIRTEEx

总结一下:

int __stdcall InitCVIRTEEx (void *hInstance, char *argv[], void *reserved);

此调用应在 cvirt.lib 中定义 - 添加到 Librarypaths (CVI2009\extlib\msvc) 链接器错误仍然发生,我只是不明白为什么。

应该以不同的方式添加库吗?我如何验证这确实是正确的库?错误是否意味着完全不同的东西?

4

2 回答 2

2

您需要告诉链接器要链接哪些库。搜索路径只会告诉链接器在哪里可以找到这些库。

IE:

Linker Libraries:
 - a.lib
 - b.lib

Linker Search Dirs:
 C:\project_a\lib
 C:\project_b\lib

链接器将在这两个文件夹中搜索 a.lib 和 b.lib,但不会链接任何尚未被告知的库。

于 2010-12-16T10:19:07.980 回答
0

我以某种方式解决了它 - 我将 cvirt.lib 和 cvisupp.lib 直接添加到项目中。现在错误消失了...

但是我仍然不满意,因为我已经为项目提供了它应该查找库的路径。我将向 stackoverflow 添加另一个问题,询问有什么区别。

于 2010-12-16T10:13:36.283 回答