//--------------------------------------------------------------------------- #include #include #pragma hdrstop //--------------------------------------------------------------------------- // 以下は、共有 RTL DLL(CP3250MT.DLL 等)を使わない DLL を作成する // 場合のメモリ管理に関する注意です // // パラメータや戻り値として AnsiString(及び AnsiString を含む構造体/ // クラス)を扱う関数を DLL からエクスポートする場合、その DLL と、DLL // を使うプロジェクトの両方に MEMMGR.LIB ライブラリを追加する必要が // あります。 // // DLL からエクスポートされた、TObject から派生されていないクラスに // 対して new または delete を使う場合にも MEMMGR.LIB を追加しなけれ // ばなりません。 // // MEMMGR.LIB を追加することにより、DLL と DLL を参照する EXE が共 // 通のメモリマネージャを使うようになります。メモリマネージャは BORLNDMM.DLL // として提供されます。DLL またはアプリケーションとともに配布して // ください。 // // BORLNDMM.DLL が使われるのを避けるには、AnsiString 型の代わりに // "char *" または ShortString 型を使って文字列のやり取りをおこなっ // てください // // 作成する DLL が共有 RTL DLL を使う場合には、RTL の方で MEMMGR.LIB // をライブラリとして追加するため DLL プロジェクトに明示的に追加す // る必要はありません。 //--------------------------------------------------------------------------- #pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } //--------------------------------------------------------------------------- #include "sampledll.h" void __stdcall Func1() { ShowMessage("Func1"); } //-------------------------- void __stdcall Func2(AnsiString str) { ShowMessage("Func2:"+str); } //-------------------------- int __stdcall Func3(int a,int b) { ShowMessage("Func3"); return(a+b); } //-------------------------