MT4: menangkap ralat import dll
Results 1 to 9 of 9

Thread: MT4: menangkap ralat import dll

  1. #1
    hai,

    hanya soalan kecil: mungkin salah seorang daripada anda tahu.

    jika saya mempunyai sesuatu seperti dalam fail pengepala mqh.

    Kod PHP: <code><span style=???color: #000000???> <span style=???color: #0000BB???></span><span style=???color: #FF8000???>#import???xxx.dll???
    </span><span style=???color: #0000BB???>voidyyy</span><span style=???color: #007700???>();
    </span><span style= ???color: #FF8000???>#import
    </span><span style=???color: #0000BB???></span> </span> </code> dan xxx.dll tidak dapat ditemui I dapatkan ralat dalam log:

    tidak boleh memuatkan perpustakaan 'xxx.dll' (ralat 126)

    Sesiapa sahaja tahu cara mudah untuk memaparkan ralat sedemikian dengan Alert atau MessageBox dan bukannya hanya menulisnya ke fail log.


    terima kasih

  2. #2
    Saya mengalami masalah yang sama dalam Akaun Demo dengan EA Indior. Apabila saya menyemak pakar saya mendapat ralat tidak boleh memuatkan xxxx .dll ( 126 ) Adakah sesiapa fikir mereka boleh membetulkannya dengan bayaran yang kecil? Saya mempunyai akses kepada kod sumber EA Indior kerana fail adalah mql4 tetapi bukan dll.

  3. #3

    Quote Originally Posted by ;
    Walaupun saya mesti menegaskan bahawa MT4 tidak boleh dipercayai untuk membebaskan semua pemegang Dll apabila EA selesai juga
    Pepijat ini berlaku hanya apabila menjalankan EA dalam penguji egy. Di sana ia terlupa FreeLibrary() dll yang telah dimuatkan dengan #import selepas ujian egy ditamatkan. Setiap larian penguji akan meninggalkan kiraan rujukan meningkat sebanyak satu. Ia mungkin boleh menyelesaikannya dalam deinit() dengan IsTesting() dan secara manual FreeLibrary() sekali lagi. Semasa operasi biasa (pada carta langsung) ia akan sentiasa membebaskan apa yang telah dimuatkan (dengan #import) dengan betul. Semua di atas hanya merujuk kepada #import. Jika anda mempunyai LoadLibrary() tambahan dalam kod anda maka sudah tentu anda masih memerlukan jumlah panggilan yang sama kepada FreeLibrary().

  4. #4
    Terima kasih banyak: Saya akan mencuba ini.

  5. #5
    Doh!
    Sudah tentu fungsi IsDllsAllowed() merangkumi masalah kecil itu!

  6. #6
    Tiada masalah. Saya tidak pasti apa yang akan berlaku jika kotak Benarkan Panggilan DLL dinyahtanda. Saya membayangkan bahawa panggilan ke LoadLibrary() akan mengembalikan 0 walaupun fail DLL wujud. Jika ini berlaku maka anda boleh menggunakan fungsi WinAPI FileOpen() atau FindFirst() untuk mengetahui sama ada fail DLL ada, Membolehkan anda untuk 'Alert' salah satu daripada dua kes: 1) DLL wujud tetapi tidak boleh dibuka - mencadangkan Benarkan DLL dinyahtanda 2) Fail DLL tiada.

  7. #7
    Bukan tanpa sedikit kerja anda sendiri ... cuba LoadLibrary FreeLibrary yang terdapat dalam Kernel32.dll supaya anda akan melakukan sesuatu seperti ini dalam Init() int hmod = LoadLibrary(c:MT4LibraryDirxxx.dll); if (hmod != 0 ) FreeLibrary(hmod); else Alert(xxx.DLL tidak boleh dimuatkan); Ambil perhatian bahawa kita harus membebaskan pemuatan DLL kerana MT4 sudah pun memuatkannya dan tingkap mengekalkan pembilang bilangan kali DLL dimuatkan oleh contoh aplikasi. Jika anda tidak membebaskan panggilan kami untuk memuatkan perpustakaan maka MT4 tidak akan membiarkan DLL Pergi apabila EA tamat. Walaupun saya mesti menegaskan bahawa MT4 tidak boleh dipercayai untuk membebaskan semua pemegang Dll apabila EA selesai, tetapi sekurang-kurangnya kita harus melakukan apa yang sepatutnya! Sudah tentu ini hanya memastikan bahawa fail DLL wujud dan bahawa ia adalah DLL yang sah ia tidak memastikan bahawa fungsi yang ditakrifkan dalam pernyataan import anda benar-benar wujud. Untuk itu anda harus menggunakan fungsi GetProcAddress() Lihat dokumen MSDN di sini
    http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx

  8. #8

    Quote Originally Posted by ;
    Bukan tanpa sedikit kerja anda sendiri ... cuba LoadLibrary FreeLibrary yang terdapat dalam Kernel32.dll supaya anda akan melakukan sesuatu seperti ini dalam Init() int hmod = LoadLibrary(c:MT4LibraryDirxxx.dll); if (hmod != 0 ) FreeLibrary(hmod); else Alert(xxx.DLL tidak boleh dimuatkan); Ambil perhatian bahawa kita harus membebaskan pemuatan DLL kerana MT4 sudah pun memuatkannya dan tingkap mengekalkan pembilang bilangan kali DLL dimuatkan oleh contoh aplikasi. Jika anda tidak membebaskan panggilan kami untuk memuatkan perpustakaan maka MT4 tidak akan membiarkan DLL Pergi apabila...
    Terima kasih rangebound!

  9. #9

    Quote Originally Posted by ;
    Saya mengalami masalah yang sama dalam Akaun Demo dengan EA Indior. Apabila saya menyemak pakar saya mendapat ralat tidak boleh memuatkan xxxx .dll ( 126 ) Adakah sesiapa fikir mereka boleh membetulkannya dengan bayaran yang kecil? Saya mempunyai akses kepada kod sumber EA Indior kerana fail adalah mql4 tetapi bukan dll.
    Saya mempunyai pengalaman dalam membetulkannya dan meminta anda untuk menghubungi anda.

Kebenaran Posting

  • Anda tidak boleh menghantar thread baru
  • Anda tidak boleh membalas kiriman
  • Anda tidak boleh mengedit siaran anda
  • Anda tidak boleh menyiarkan lampiran
  •  
  • Kod BB Hidup
  • Smilies Hidup
  • Kod [IMG] adalah Hidup
  • Kod [VIDEO] adalah Hidup
  • Kod HTML Tidak Hidup
Polisi Kuki
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.