2012-02-07 6 views
0

使用して構文を使用して、クラスの定義私はC++プロジェクトでクラスをこのように定義するとき、それは正確にどういう意味:C++ - DLL

クラスTHIS_DLL_NAMEのCLASS_NAME { ... }

感謝!

+3

おそらく、「THIS_DLL_NAME」はいくつかのマクロです。ヘッダーファイルをチェックインしてください... –

+0

__declspec(dllexport) –

+0

クラスのエクスポートは非​​常に壊れやすいです。 –

答えて

0

上記のコメントでBasileとHansが述べたように、THIS_DLL_NAMEは、ライブラリ自体を構築しているか、そのライブラリを使用しているかどうかによって条件付き展開されるマクロになります。

(ところで、私が原因DLLの用語には、ここでのWindowsにしていると仮定しています。)

THIS_DLL_NAME__declspec(dllexport)または__declspec(dllimport)のいずれかに拡張することができます。ヘッダーファイルがTHIS_DLL.dllにコンパイルされている.cppファイルに含まれている場合、コンパイラは適切なエントリポイントを生成してDLLからエクスポートするために__declspec(dllexport)を参照する必要があります。

THIS_DLL.dllを使用しているコードにクラスヘッダーが含まれている場合、コンパイラはシンボルをインポートするための適切なコードを生成するために__declspec(dllimport)を参照する必要があります(実行時に解決します)。

詳細については、この記事のImporting and Exporting (MSDN)でマイクロソフトから直接お読みください。