私はZwQueryInformationProcessを使用するためにntdll.libとリンクしており、マルチスレッドランタイムライブラリを使用しています。エラーLNK2005:_sprintfは既にntdll.lib(ntdll.dll)で定義されています
ntdllは、いくつかのcrt関数を定義しているようです。だから、私はそれにリンクし、また、ランタイムライブラリを使用すると、私はリンカエラーを取得します。
リンカにcrt関数を使用させ、ntdllシンボルを無視してエラーを取り除くことはできますか?あるいは、何らかの形でこのエラーを解決します。
私はZwQueryInformationProcessのドキュメンテーションが動的ロードを示唆していることを知っていますが、静的なlibで使用されています。私のメインプロジェクトもリンクしています。これは長い間うまくいきました。
ありがとうございました。
他のサイトでこれについて少し議論がありました。例えば、http://www.codeguru.com/forum/archive/index.php/t-414274.htmlですが、良い解決策を提供するようなものは見ていません。リンク順序を変更することについていくつか言及していますが、プロジェクト設定でランタイムライブラリがリンクする順序を変更する方法はわかりません。
どこからntdll.libを入手しましたか? ntdll.dllはsprintfをエクスポートしますが、先頭のアンダースコアはありません。 _sprintfのリンカーエラーは発生しないはずです。 –
私はC:\ WINDDK \ 7600.16385.0 \ lib \ wxp \ i386 \ ntdll.libにリンクしていますが、そのDDKのlibの後のバージョンがあることを認識していますが、私のプログラムはxpで実行する必要があります。私はチェックして、これは_sprintfを持っていますが、他のntdll.libはエクスポートしていません。 –