2010-11-23 8 views
2

別のdll(Visual C++の両方)内でdllをロードする必要があるため、2番目のDLLに最初に埋め込まれたクラスを使用できます。私は両方のDLLを作成して以来、私は両方のコードを持っていますが、私はどのようにこれが行われているかわからないので、ライブラリを動的にロードしたことがない...別のDLL内でDLLを動的にロードする

さらに、私はマルチプラットフォーム既に.dllと.soの両方でコンパイルされているので、これを行うためのプラットフォームに依存しない方法は素晴らしいと思います...そうでなければ、マクロを使用してウィンドウやLinux固有のコードを組み込むことができます。

敬具、多くの感謝

答えて

0

は、一般的にだけで最低レベルのDLLをコンパイルしてリンクします。 DLL自体と.LIBファイルが作成されます。次のDLLをコンパイルしてリンクし、その.LIBファイルにリンクします。 .EXEに達するまでチェーンを進め、(通常)何もリンクしないようにします。

+0

Okie dokie、すばやい応答のためにありがとう – Alex

1

ライブラリを動的にロードする関数は次のとおりです。LoadLibrary(Windows)、dlopen(Linux)。シンボルを取得するには:GetProcAddress(Windows)、dlsym(LInux)。オープンライブラリを閉じる:FreeLibrary(Windows)、dlclose(Linux)。ウィンドウ上でクラスを動的にロードする方法の記事は、http://www.codeproject.com/KB/DLL/classesexportedusingLL.aspxとLinux:http://www.linuxjournal.com/article/3687?page=0,0です。そして、WindowsとLinux上でライブラリを動的にロードするコードがあります:http://www.sview.ru/sources/libexample/loadLibrary.h。これがあなたを助けることができれば幸いです。

http://www.codeguru.com/cpp/w-p/win32/article.php/c1443(Windowsの場合):

動的にWindowsとLinuxの負荷クラスに関する追加情報があります。 http://www.faqs.org/docs/Linux-mini/C++-dlopen.html#loadingclasses(Linux)

+0

うわー、素晴らしい記事、多くの感謝! – Alex

関連する問題