ライブラリとそのテスト ハーネスである古いワークスペースを開きました。以前は正常に動作していましたが、現在は動作せず、古いバージョンのコードも同じエラーで動作しません。プロジェクトを再作成しようとしましたが、同じエラーも発生します。プロジェクト設定に異常はなく、生成されたコードはメイン アプリで動作します。
ほとんどのファイルを削除し、エラーを生成するために最小限に抑えました。残念ながら、これは製品コードで使用されているため、プロジェクトを投稿できません。
通常、LNK2001 リンカー エラーは、ライブラリを中断したか、仮想関数の実装を忘れたことを意味します。ただし、これは標準テンプレート ライブラリの一部であり、そのヘッダーです。
IOCompletionPort.obj で問題があるとリストされているコードは、実際にはstd::string
直接使用していませんが、次のことを行うクラスを呼び出します: a とorの値をComms::Exception
受け入れます。std::string
GetLastError
WSAGetLastError
エラー ( GetMessage
) に記載されている関数は実装されていますが、仮想関数であるため、必要に応じて他のクラスがオーバーライドできます。ただし、コンパイラはそれを Ansi バージョンとして作成したようですが、それを制御する設定のオプションが見つかりません。それが問題かもしれないと思いますが、ライブラリのオプションがほとんどないため、確実に知る方法がありません. ただし、どちらのプロジェクトもコンパイラ オプションで _MBCS を指定します。
--------------------構成: TestComms - Win32 デバッグ-------------------- リンク中... Comms.lib(IOCompletionPort.obj): エラー LNK2001: 未解決の外部シンボル "public: virtual class std::basic_string,class std::allocator > __thiscall Comms::Exception::GetMessageA(void)const " (?GetMessageA@ Exception@ Comms@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) Debug/TestComms.exe : 致命的なエラー LNK1120: 1 つの未解決の外部エラー実行中link.exe.
TestComms.exe - 2 つのエラー、0 の警告
助言がありますか?私はこれで午前中のほとんどを失いましたが、午後もほとんど失いたくありません。