使用して構文を使用して、クラスの定義私はC++プロジェクトでクラスをこのように定義するとき、それは正確にどういう意味:C++ - DLL
クラスTHIS_DLL_NAMEのCLASS_NAME { ... }
感謝!
使用して構文を使用して、クラスの定義私はC++プロジェクトでクラスをこのように定義するとき、それは正確にどういう意味:C++ - DLL
クラスTHIS_DLL_NAMEのCLASS_NAME { ... }
感謝!
上記のコメントで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)でマイクロソフトから直接お読みください。
おそらく、「THIS_DLL_NAME」はいくつかのマクロです。ヘッダーファイルをチェックインしてください... –
__declspec(dllexport) –
クラスのエクスポートは非常に壊れやすいです。 –