リンカーの警告が表示されます
warning LNK4217: locally defined symbol lzma_check_is_supported imported in function "void __cdecl parse_real(struct args_info *,int,char * *)" (?parse_real@@YAXPAUargs_info@@HPAPAD@Z)
lzma_check_is_supported
関数は、別のディレクトリ内の他の .cpp ファイルに存在します。parse_real
別のものに存在します。ソースコードのコンパイル中にパス-I../src/common
(この関数の定義を含む) を指定しました。ただし、機能していないようで、アプリケーションがクラッシュします。
lzma_check_is_supported
また、アプリのクラッシュを含むファイルにのコードを貼り付けるとクラッシュしますparse_real
が、今回はもう少しクラッシュが発生します (windbg でこれを見ました)。
関数定義がリンカーで使用できないため、インポートされている可能性があると推測しています。最初はこの警告を無視していましたが、これが主な問題であることがわかりました。
MSDN http://msdn.microsoft.com/en-us/library/aa3se25k(v=vs.80).aspxは、でコンパイルすると言います/clr
。しかし、私は得るerror LNK2022: metadata operation failed (80131188) : Inconsistent field declarations in duplicated types (types: lzma_coder_s; fields: <alignment member>): (0x04000003).
デバッグフォルダーを削除して再構築する(機能しない)と言った他の投稿を参照しました。リンカーの警告のみを解決したい。/clr
フラグを付けてコンパイルすることで正しくやっていますか?
はいの場合、メタデータ エラーを修正するにはどうすればよいですか?
ありがとう