2012-01-14 24 views
-1

私はいくつかのerror LNK2019: unresolved external symbolエラーを取得していますが、彼らは、このリンクエラーに関する他のすべてのStackOverflowのポストのようにdll秒、lib秒、またはOOエラーに起因するものではないです。のVisual Studio C++ 2010リンクエラー

コード:

https://github.com/mcandre/fgdump/tree/master/cachedump

トレース:.cppファイルはC++コードとしてコンパイルされながら

1>------ Build started: Project: cachedump, Configuration: Release Win32 ------ 
1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification 
1>cachedump.obj : error LNK2019: unresolved external symbol "void __cdecl rc4_crypt(struct rc4_state *,unsigned char *,int)" ([email protected]@[email protected]@[email protected]) referenced in function "unsigned long __cdecl DumpCache(void)" ([email protected]@YAKXZ) 
1>cachedump.obj : error LNK2019: unresolved external symbol "void __cdecl rc4_setup(struct rc4_state *,unsigned char *,int)" ([email protected]@[email protected]@[email protected]) referenced in function "unsigned long __cdecl DumpCache(void)" ([email protected]@YAKXZ) 
1>cachedump.obj : error LNK2019: unresolved external symbol "void __cdecl md5_finish(struct md5_context *,unsigned char * const)" ([email protected]@[email protected]@[email protected]) referenced in function "unsigned long __cdecl DumpCache(void)" ([email protected]@YAKXZ) 
1>cachedump.obj : error LNK2019: unresolved external symbol "void __cdecl md5_update(struct md5_context *,unsigned char *,unsigned long)" ([email protected]@[email protected]@[email protected]) referenced in function "unsigned long __cdecl DumpCache(void)" ([email protected]@YAKXZ) 
1>cachedump.obj : error LNK2019: unresolved external symbol "void __cdecl md5_starts(struct md5_context *)" ([email protected]@[email protected]@@Z) referenced in function "unsigned long __cdecl DumpCache(void)" ([email protected]@YAKXZ) 
1>C:\Users\andrew\Desktop\src\fgdump\cachedump\Release\cachedump.exe : fatal error LNK1120: 5 unresolved externals 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

ABC

+0

あなたはStackOverflowのために新しいものではありません。この種の質問はすぐに終了しないことをご存じですか? –

+0

この質問は重複していません。 LNK2019の他の投稿とは大きく異なります。根本原因は著しく異なります。なぜなら、このコードは 'dll'を使用せず、' lib'を使用せず、OOを使用しないからです。 – mcandre

+0

私はそれが重複しているとは言いませんでした。それはあなたに私達にたくさんのコードを与えて、あなたのエラーを見つけるように頼んでいるので、それはSOには合わない質問です。問題を再現する最小限の例はどうでしたか? –

答えて

1

.cファイルは、Cコードとしてclによってコンパイルされています。 CC++コードのシンボル定義の違いにより、C++コードはCコードの機能を見ることができません。 extern "C"ラッパーは、以下のテンプレートを使用するようにするに

利用プロジェクト全体

ためextern "C"ヘッダのラッパー、またはより良い使用同じ言語が

#ifdef __cplusplus 
extern "C" 
{ 
#endif 

//put C-function declarations here  

#ifdef __cplusplus 
} 
#endif 
+0

ありがとうございます。残念ながら、これを使用して私の問題は解決されず、不思議なことに、プロジェクト内の他のコードはextern宣言を使用せずに正常にリンクします。 – mcandre

+0

その問題が修正されました。あなたはそれを試みましたか?もしそうなら、何を試しましたか?理由は、そのコードは 'C++ 'で、' C++ 'コードで使用されているので、他のコードはOKにリンクします。 – Lol4t0

+0

Visual Studioソリューションをダウンロードして開きます。 externsを追加することは助けにならないことがあなた自身で分かります。 – mcandre

関連する問題