特定のDLLカプセル化オブジェクトについては、Liu Yiの「DLLカプセル化とDelphiのオブジェクトテクノロジーを呼び出す」と本のソースコードを参照してください。
Delphiを使用してDLLをコンパイルするプロセスでいくつかの奇妙な問題に遭遇しました。
1。Delphiによって生成されたDLLプロジェクトは、次のように書いています。Sharememは、ライブラリの使用条項とプロジェクトの最初のユニットでなければなりません。ここでは、DLLプロジェクトとDLLを使用したプロジェクトの両方が、Sharememユニットを参照する必要があることが言及されています。
Sharememユニットをプロジェクトに追加するのが最善です。実際に使用すると、オブジェクトが使用するプロジェクトの間に渡されることがあることがわかっています。
2。定義の問題を呼び出すdll関数:
dllの出力:function abc:iinterface;
関数呼び出しは、プログラムで次のように定義されます。
タイプ
tfunc = function:iinterface;
奇妙なエラーが発生します。これは、DLLで定義されているものと同じと定義する必要があります。
タイプ
tfunc = function:iinterface;
3. DLLでインターフェイスを使用する場合、使用後にオブジェクトがDLLで解放される前にnilに設定することを忘れないでください。
4。DelphiでのDLLのデバッグ:DLLをデバッグするときにブレークポイントを追加できないという問題に遭遇します。コンパイルされたDLLの出力パスがDLLを呼び出すメインプログラムパス設定と同じであり、絶対パスである必要があるかどうか、DLLの設定を確認してください。
5。「DLLのカプセル化および呼び出しオブジェクトテクノロジーのデルフィ」では、カプセル化オブジェクトに対するDLLの主な制限はです
?? 1LLを呼び出すアプリケーションは、DLLのオブジェクトの動的バインディング方法のみを使用できます
2。 。 。
3。 。 。
DLLのメインプログラムでオブジェクトを使用する方法については、そのような制限がないようですが、なぜですか?