リンカーエラーLNK2019は__stdcallに戻りました。私は正しいlibを手に入れたと思います - これを解決するために何ができますか?
質問
LabCVI Projektを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で定義する必要があります-wichはライブラリパスに追加されます(cvi2009 extlib msvc)リンカーエラーがまだ発生します。
libを別の方法で追加する必要がありますか?これが本当に正しいLIBであることを確認するにはどうすればよいですか?エラーは完全に異なるものを意味しますか?
解決
リンカーにリンクするライブラリを伝える必要があります。検索パスは、リンカーにそれらのライブラリを見つける場所を指示するだけです。
つまり:
Linker Libraries:
- a.lib
- b.lib
Linker Search Dirs:
C:\project_a\lib
C:\project_b\lib
リンカーは両方のフォルダーをA.LibとB.Libを検索しますが、言われていないライブラリをリンクしません。
他のヒント
どういうわけかそれを解決しました - 私はプロジェクトにcvirt.libとcvisupp.libをdirektlyに追加しました。エラーはもうなくなりました...
しかし、私はまだプロジェクトにライブラリを探すべき道をプロジェクトに与えたので、まだ満足していません。 Stackoverflowに別の質問を追加します。違いは何なのかを尋ねます。
所属していません StackOverflow