2

libxml2VS 2012 のコンパイルとDDK 7ヘッダーとライブラリへのリンクを使用してライブラリを構築しようとしています。VS 2005 では正常にビルドされますが、VS 2012 ではリンカー エラーが発生します。生成されたシンボルを詳しく調べると -

VS 2005 では、

Found __imp___vsnprintf
    Referenced in error.obj
    Referenced in xmlreader.obj
    Referenced in xmlwriter.obj
    Referenced in xmlstring.obj
    Loaded msvcrt.lib(msvcrt.dll)

VS 2012では、

error.obj     : error LNK2019: unresolved external symbol __imp__vsnprintf  
                               referencedin function ___xmlRaiseError
xmlreader.obj : error LNK2001: unresolved external symbol __imp__vsnprintf
xmlwriter.obj : error LNK2001: unresolved external symbol __imp__vsnprintf
xmlstring.obj : error LNK2001: unresolved external symbol __imp__vsnprintf

__imp__vsnprintf__imp___vsnprintf同じ機能に対してそれぞれ VS 2012 と VS 2005 で ( VS 2005 の_前に余分なマークがあることに注意してくださいvsnprintf)。ビルド ログで VS 2005 と VS 2012 のコンパイラ オプションとリンカー オプションを確認しました。どちらも同じです。オプションがコンパイラに渡されると、showIncludesVS 2005 と VS 2012 の両方でソース ファイルに使用されるヘッダーのセットがまったく同じであることがわかります。

VS 2012 のシンボル生成が異なるのはなぜですか? デフォルトのヘッダーとライブラリに対してコンパイルおよびリンクせずに問題を解決するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

1

DDKユーザー モード コンポーネントの構築には使用しないでください。DDKの略ですDriver Development Kit。ユーザーモードで使用すると、未定義の動作になります。SDK代わりに使用してください。

于 2012-11-21T07:46:51.447 に答える