1

サードパーティの .lib を使用する Win32 アプリケーションを構築しようとしています。「LIBC」が見つからないというエラーが表示され (Visual C++ 2010 Express を使用しています)、サードパーティ ライブラリへの参照を追跡しました。「/NODEFAULTLIB」を追加すると、LIBC への参照が解決されますが、(もちろん) 多数の不足しているシンボルが提供されます。LIBC がシングルスレッドであり、あらゆる種類の頭痛の種になる可能性があることは知っていますが、今は成功するリンクを取得しようとしています。

よろしく、ソレン

4

2 に答える 2

2

#pragma comment(lib, "libc.lib") が挿入された、リンカへの単なるヒントです。/NODEFAULTLIB:libc.libリンカーオプションはそれを再び消します。リンカー エラーが発生した場合は、実際にlibc.lib に明示的にリンクする必要があります。

そうでなければ、そのライブラリは前世紀にさかのぼります。VS の最新バージョンは libcmt.lib を使用しており、CRT のシングルスレッド バージョンはもうありません。したがって、この libc.lib 参照が前世紀にコンパイルされた .lib または .obj からのものである場合、より大きな問題が発生します。コンパイラのヘッダー ファイルは変更が多すぎて、まだ機能していません。

リンカ エラーを投稿しないと、より適切な回答が妨げられます。

于 2012-04-20T10:24:26.523 に答える
1

そこで、修正しました!

プロジェクト->プロパティ->リンカー->入力に移動して、目を開ける必要があったようです。

「すべてのデフォルトライブラリを無視する」を有効にするのではなく、「特定のデフォルトライブラリを無視する」に「libc」を追加する必要がありました。

物事はうまくいきます(ただクイックランをしました)。もちろん、使用されている標準Cライブラリのマルチスレッドバージョンが原因で隠れたエラーが発生する可能性がありますが、これまでのところ問題ありません。

于 2012-04-20T10:55:21.707 に答える