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 で定義する必要があります - ライブラリパス (CVI2009\extlib\msvc) に追加されます。リンカー エラーが引き続き発生し、理由がわかりません。

ライブラリを別の方法で追加する必要がありますか? これが本当に正しいライブラリであることを確認するにはどうすればよいですか? エラーはまったく別のものを意味しますか?

4

2 に答える 2

2

リンクするライブラリをリンカーに伝える必要があります。検索パスは、それらのライブラリの場所をリンカーに伝えるだけです。

すなわち:

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 に答える