1

いくつかのソース コードを DLL にコンパイルし、それを他のプロジェクトにロードする必要があります。というエントリがあります

extern "C" LTCPOS_LSHARED_EXPORT tcpClient_Os* getClientInst(VhostInfo hostInfo, CtcpOpt *tcpOpt, QObject *parent = 0);

「tcpClient_OS」の型は自己定義クラスです。別のプロジェクトで QLibrary を使用して DLL をロードすると、プロジェクトをエラーなしでコンパイルするには、ソース ファイル (cpp ファイル)を *.pro に追加する必要があるようです。なんで?

自己定義されたクラス ポインタを返す関数を使用して DLL を構築する通常のルーチンは何ですか?また、どのようにロードすればよいですか?

4

1 に答える 1

1

qt の構築には慣れていませんが、Windows では通常、別の dll で何かを呼び出すために lib といくつかのヘッダー ファイルが必要です。また、コンパイル時に不明なものを実行するための LoadLibrary、GetProcAddress もあります。

それはqtのものを構築するのと非常によく似ているようです。dll をコンパイルすると、dll 自体に加えて、lib が生成されます。プロジェクトを参照するためのプロジェクト構成では、ライブラリへのパスを含む LIBS += が必要です。

これは、Windows LoadLibrary/GetProcAddress および dlopen/dlsym の抽象化である QLibrary で見つけたリンクです http://tufangorel.blogspot.com/2011/11/call-symbol-from-shared-object-file-dll-with -qlibrary.html

于 2012-10-30T11:03:13.783 に答える