"10 dakikada MQL5 için DLL kütüphanesi nasıl yazılır ve veri alışverişi yapılır?" makalesinin tartışılması - sayfa 5

 
mql5 писал(а) :

1) terminalin hangi sürümü 32 veya 64 bit?

2) dll'nin hangi sürümü 32 veya 64 bit?

1) seçim nedir? Bence buradan sadece x86 indiriliyor...

2) dll 32

 

MT5'i yeniden yüklemek aşağıdaki sonucu verdi. Komut dosyası çalıştırıldığında, günlükte aşağıdaki bilgiler görünür 'MQL5DLLSamples.dll' dosyasında fnCalculateSpeed fonksiyonu bulunamıyor

Her ihtimale karşı, kitaplığın bir anlık görüntüsünü Dependency Walker'dan ekliyorum .

 
denkir :

MT5'i yeniden yüklemek aşağıdaki sonucu verdi. Komut dosyası çalıştırıldığında, günlükte aşağıdaki bilgiler görünür 'MQL5DLLSamples.dll' dosyasında fnCalculateSpeed fonksiyonu bulunamıyor

Her ihtimale karşı, kitaplığın bir anlık görüntüsünü Dependency Walker'dan ekliyorum .

  

Yeniden kurulan terminalin yapı numarası nedir?
 
stringo :
Yeniden kurulan terminalin yapı numarası nedir?
Görünüşe göre eski, belli ki son 240 yapı değil.
 
Renat писал(а) :
Görünüşe göre eski, belli ki son 240 yapı değil.

Evet kesinlikle son değil...

240. yapıya güncelleme yaptıktan sonra, betiğin ilk çalıştırması iyi çalıştı. sevindim. Ancak sonraki lansmanlar yalnızca bir çökmeye neden oldu. MT 4 paralel olarak çalıştı.

 

Yeniden başlatmanın ardından her şey çalışıyor gibiydi! :-))

fnCrashTest(int arr) işlevi yorumlandı

Yardım eden herkese teşekkürler!

 
Genel olarak, dll kullanarak hesaplamaların hızını 2,5 kattan fazla artıramadım. Bu , MQL5'in yüksek hızından bahseder ve çoğu ticaret görevinde, kodu korumanın gerekli olduğu ve "ağır" hesaplamaların gerekli olduğu durumlar dışında, dll'lerle uğraşmanın bir anlamı yoktur.
 
joo :
Genel olarak, dll kullanarak hesaplamaların hızını 2,5 kattan fazla artıramadım. Bu, MQL5'in yüksek hızından bahseder ve çoğu ticaret görevinde, kodu korumanın gerekli olduğu ve "ağır" hesaplamaların gerekli olduğu durumlar dışında, dll ile uğraşmanın bir anlamı yoktur.

Son MQL5 kayıt optimizasyonu henüz etkinleştirilmedi - yürütme hızı yine de ciddi şekilde artırılacak.
 

Renat, makale için teşekkürler. Bir çok kişinin işine yarayacağını düşünüyorum. dll ile ilgili bir sorum var (Terminal 249, Editör 248)

Misal

Elimizde libra demo.dll var, sadece bir işlevi var

_DLLAPI void __stdcall demo( char *stream, char *buf){ buf=stream;}

mql betiğimiz var demo.mq5

 #property copyright "2010, MetaQuotes Software Corp."
#property link       "http://www.mql5.com"
#property version   "1.00"

#import "demo.dll"
void demo( string s1, string &s2);
#import

void OnStart(){
   string a= "TEST" ; string b;
   demo(a,b);
   Print (b);    
}

Derleyici hiçbir hata veya uyarı üretmez.

Terminalde çalıştırın, aşağıdakileri alıyoruz

Görsel hata ayıklamayı kontrol ederken, demo.dll işlevinin kendisinin bir dize değil, ilk karakterini aldığını da buldum.

Soru

Sorun nedir? MQL'den dll'ye bir dize insanca nasıl geçirilir?

 
Kullanmak   char yerine wchar_t