0

私は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オフになっているため、おそらく)

4

1 に答える 1