私はMFCが初めてです。
別の DLL にリンクする MFC で DLL を作成しようとしています。
問題は、コンパイルしようとすると、リンクしようとしている DLL に存在する関数に対して LNK2019 エラーがスローされることです。
LNK2019 は、DLL または DLL 内の関数が見つからない場合です。
私はすべての手順を実行しました。DLLは既知の場所に配置され、libも既知の場所に配置され、追加の依存関係に追加され、すべての正しいスイッチが適用されました(とにかく私が知っているもの)。
私は Dependency walker を使用しており、リンクしようとしている DLL がこの関数を公開していることを知っています。関数の使用例は他にもありますが、それとまったく同じように使用しようとしています。.lib と .dll は一致しています。つまり、互いに一貫しています。
しかし、それでもエラーは解決しません。
編集 これはエラーメッセージです:
エラー 2 エラー LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: bool __thiscall PwServer::Connect(wchar_t const *,unsigned long,unsigned long *)" (_ imp ?Connect@PwServer@@QAE_NPB_WKPAK@Z) 関数で参照"public: bool __thiscall CPwServer::Connect(class ATL::CStringT > >,unsigned long,unsigned long *)" (?Connect@CPwServer@@QAE_NV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ ATL@@@@@ATL@@KPAK@Z)
これは、DLL にアクセスするために使用する呼び出しです。
bool conn = PwSrv->Connect(_T(""));
関数の Dumpbin エクスポート:
25BE6 ?Connect@PwServer@@QAE_NPBGKPAK@Z 25BE6 __imp_?Connect@PwServer@@QAE_NPBGKPAK@Z
AFX_EXT_ などを追加するなど、MFC DLL を通常の DLL とリンクする場合に必要なものは他にありますか?
これで親切にアドバイスしてください。ありがとうございました。
アップデート
必要だったのは、Project Properties>>C/C++>>Language>>Treat wchar_t as a built in type で設定されたフラグを NO に切り替えることだけだったようです。私はこれまでフラグを気にしたことがなかったので、知りませんでした。リンカーエラーがありました...
わかった。今、私は別の問題を抱えています。wchar_t を切り替えることで、別の MFC DLL とリンクしている DLL の問題は解決しましたが、アプリケーションが DLL のエントリ ポイントを見つけることができません。依存関係ウォーカーでは、アプリケーションが送信している CString と、私の DLL が受け入れている Unsigned Short.. の間の不一致を示しています (wchar_t
オフになっているため、おそらく)