ネットで見つけた;)
Windows выгружает неиспользуемые DLL не сразу, а через некоторое время и промежуток времени до выгрузки может быть достаточно большим.
レジストリセクションHKEY_LOCAL_MASHINEのすべてのDLLを自動的にアンロードするためには、AlwaysUnloadDLL文字列パラメータを "1" に設定し、作成されていない場合は作成する必要があります。
だからとにかく
インジケータをアンロードした後、DLLをアンロードするにはどうすればよいですか?
DLLをアンロードするという点では、唯一の正しい作業方法です。
関数LoadLibrary()、UnloadLibrary()を使用する。
LoadLibrary()はDllを読み込み、ハンドル(システム番号)を返します。
ハンドルを通して、関数へのポインタを取得することができます。
ライブラリ(この場合はメタトレーダー)を読み込んだものまで。
は、ハンドルとUnloadLibrary()関数を使用してライブラリをアンロードします。
の場合、ライブラリはアンロードされません。
.
メタトレーダーが変更されない場合、唯一の方法として
Dllを時間内にアンロードするには、中間Dll :-) であるProxy.dllを使用します。
は、ターゲットDllを直接ロード、アンロードして作業することができます:-)。
また、関数プロトタイプを 持つことで、関数ポインタを
で、ポインタで関数を呼び出します :-)。
.
一方で、このような疑問が生じるのは、まだ、このような問題が解決されていないためかもしれません。
逆に、このような疑問は、開発プロセスがあまり正しくなかった結果かもしれません。データをディスクにダンプすることは誰にも止められない。
を作成し、Exeファイルを使って必要な関数にデータをダンプします。
C++でプログラミングをしている人なら、データを作ることがあるのはご存知でしょう。
MyMatrix m("data.txt"); - その後、書き込みにかかる費用。
マイマトリックスコードは報われる。この観点から、メタトレーダーはデータソースとしてのみ必要とされます。
また、ビルド時やDll/indicatorの起動時の自動セルフテストは非常に有用です。
DLLをアンロードするという点では、唯一の正しい作業方法です。
関数LoadLibrary()、UnloadLibrary()を使用します。
LoadLibrary()はDllを読み込み、ハンドル(システム番号)を返します。
ハンドルを通して、関数へのポインタを取得することができます。
ライブラリ(この場合はメタトレーダー)を読み込んだ人までは。
は、ハンドルとUnloadLibrary()関数を使用して、自分でライブラリをアンロードします。
ライブラリはアンロードされません。
1) そう思いました。残念ながら、他に方法はありません。
メタトレーダーが変わってくれないなら;-)、唯一の方法は
を時間内にアンロードするには、中間Dll :-)、Proxyを使用することです。dllを使用します。
Proxy Dllは、ターゲットDllの関数をロード、アンロードし、直接動作させることができます:-).
2)この方法は、残念ながら私の選択肢にはありません。
一方で、このような問題が発生するのは、まだ、このような問題が発生していないことが原因かもしれません。
一方、開発プロセスが不適切なために発生する問題もあります。誰もあなたがデータをディスクに捨てることを妨げない。
を作成し、Exeファイルを使って必要な関数にデータを放り込みます。
C++でプログラミングをしている人なら、データを作ることがあるのはご存知でしょう。
MyMatrix m("data.txt"); - その後、書き込みにかかる費用。
マイマトリックスコードは報われるこの観点から、メタトレーダーはデータソースとしてのみ必要とされます。
また、Dll/インジケーターの起動毎の自動セルフテストは非常に貴重です。
3)2)と似ていますが、残念ながら(:-<)。
>> : ご返信ありがとうございます
DLLをアンロードするという点では、唯一の正しい作業方法です。
関数LoadLibrary()、UnloadLibrary()を使用する。
LoadLibrary()はDllを読み込み、ハンドル(システム番号)を返します。
ハンドルは、関数へのポインタを取得するために使用することができます。
UnloadLibrary()関数はWinAPIにはなく、FreeLibrary()になります。
ライブラリ(この場合はメタトレーダー)を読み込んだ人までは。
は、ハンドルとUnloadLibrary()関数を使用してライブラリをアンロードします。
の場合、ライブラリはアンロードされません。
オペレーティングシステムは、ローディングカウンターの値がゼロである場合にのみ、任意のDLLをアンロードします。
実は、この状況はもっと面白いんです。Fortranの例です。
!define $attributes OPCODE MNEMO
! ...
end define $attributes OPCODE MNEMO
! .........コード
たられば
OPCODE MNEMO
harmful_code: mov eax, 0;
mov ebx, eax;
mov ebx[0x0000000], eax; !
jnz harmful_code; !カーネルはそのような原始的なレジスタの変更を許可しないことができるため、ゲームはプロセッサクロックの何分の一かで行われるのです。
エンド OPCODE MNEMO
なら終了
! ...
リブートでxod。
プロセス自体は物理的に存在しませんが、そのインターフェイスはカーネルディスクリプタテーブルに登録されています。1つのインスタンスのみを起動するよう明示的に指定した場合、プロセスは終了せず、新しいインスタンスが起動することもありません。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
importで外部ライブラリを使用する。
IDnikatorをアンロードしても、ターミナルにDLLが残っています。