2017-12-02 13 views
0

私は2017にアップグレードするまで、Visual StudioのすべてのバージョンでコンパイルされたCコードをいくつか持っています。何らかの理由で、アップグレードプロセスがリンカーの参照を壊してしまい、 HWND、SendMessageなどのエラーが発生しました。Visual Studioでerrnoにリンクエラーlnk2001を取得する2017

私はリンカープロパティの入力リストに迷いがあり、user32.lib、gdi32.libなどを追加して、欠落している外部シンボルエラーのほとんどを解決しましたが、取り除くことはできません最後の2つのエラーどちらも古いCの人々がファイルシステムのエラー結果変数として認識する_errnoを探しています。私は明示的にlibcmtd.libをリンカーの入力リストに追加しましたが、まだ喜んでいません。

VS2017のこの最後のリンクエラーを回避するにはどうすればよいですか?

+0

プロジェクトの複雑さによっては、参照を修正するのではなく、プロジェクトを再作成することを検討します。 – SoronelHaetir

答えて

0

答えは、VS2017がerrno.hファイルを変更してerrnoも宣言していることが判明しました。過去のVisual Studioの実装では、errno.hはerrnoのさまざまな戻り値の定義のリストに過ぎませんでした。 VS2017では、errno.hは条件付きでerrnoを宣言します。

errnoへのextern参照を作成した私のファイルは、errnoが0だった場合にのみ気になりますので、ファイルにerrno.hを含めて気にしませんでした。

errnoのexternリファレンスを作成していたファイルにerrno.hをインクルードするだけでした。

VS2017の変更は意味がありますので少し前に行われていませんでした。

関連する問題