2009-08-19 16 views
0

32ビットモードでコンパイルできるDLLを作成しましたが、64ビットモードでコンパイルすると(32ビットボックスクロスコンパイルと64ビットネイティブ)上記のエラー。VC++ LNK2001:64ビットコンパイル時にのみ未解決の外部シンボル

"struct return_info_ * __cdecl patch_file(char *,char *,char *)" 

私はCに新しいです++が、私は私が正しく構造体と署名の両方を定義していると思う:それは文句を言っている 記号は次のとおりです。 「return_info_は」のように定義される構造体は、以下:コンパイルさ

return_info* patch_file(char* oldfile, char* newfile, char* patchfile); 

これはネイティブのC/C++コードのすべてで、私は、関数の署名が同じヘッダで

typedef struct return_info_ 
{ 
    char *message; 
    int code; 
} return_info; 

静的にリンクされたライブラリとして。私は、これにリンクし、clr互換のバイナリですメインライブラリを持っています。 64ビットコンパイラがこれらのエラーを投げる理由は何ですか?

答えて

1

ヘッダーの宣言が正しいように見えますが、何らかの理由で64ビットビルドで実際の実装が見つからないことがあります。

これはあなたのライブラリで定義されていますか? 64ビット版で正しくコンパイルされていない可能性があります。

これがアプリケーションの一部である機能の場合は、正しいソースファイルが64ビットビルドプロセスの一部として含まれていることを確認してください。

+0

私は、64ビットビルドが別のディレクトリに移動したことに気がつきませんでした。さまざまなビルドオプションとリンカオプションを試してみると、私はそれを変更しなければなりませんでした。すべてをクリアし、すべてが正しい場所を指していることを確認して、正しくコンパイルします。ありがとう! –

関連する問題