私はDelphiで書いたDLLを扱うのに多くの問題があります。私は図書館に次のコードを使用してDllMain関数を設定しました:DLL_PROCESS_ATTACHの前にDelphi DllMain DLL_PROCESS_DETACHが呼び出されました。
begin
DllProc := DllMain;
end.
私DllMain
手順は、次のようになります。私は見つけることだ何
procedure DllMain(reason: Integer);
begin
if reason = DLL_PROCESS_DETACH then
OutputDebugString('DLL PROCESS DETACH')
else if reason = DLL_PROCESS_ATTACH then
OutputDebugString('DLL PROCESS ATTACH')
else if reason = DLL_THREAD_ATTACH then
OutputDebugString('DLL THREAD ATTACH')
else if reason = DLL_THREAD_DETACH then
OutputDebugString('DLL THREAD DETACH')
else
OutputDebugString('DllMain');
end;
(DETACHが呼ばれるように思われることですATTACHが呼び出される前に、私がコントロールしていない)呼び出し元によって、2回(?それは可能ですか、あるいは私はこれがどのように機能するはずか誤解していますか?私の期待は、ATTACHのすべてのコールが一致するDETACHコールで満たされるということですが、それはそうではないようです。
ここには何がありますか?
ええと...私はこれが私の問題すべてに対する解決策になることを期待していましたが、この追加の知識は(私の質問には真実ですが)まだ私の問題を解決していません。私は別の質問:)を作成する必要がありますように見えます。ご協力いただきありがとうございます! – aardvarkk
あなたは何を理解していません。この質問のすべてがここにあります。コードが実行される前に発生するDllMainの唯一の呼び出しは 'DLL_PROCESS_ATTACH'です。だから、あなたはちょうどSertacが言うようにそれを書いて、それはすべていいです。 –
いいえ、これは完全にはっきりしています。私はそれを理解し、それを実装することができます。しかし、私のより大きな問題(これに関係していたと思っていた)に対する答えは、実際にはこの問題に関連していないことが明らかになりました。検索が続行されます! – aardvarkk