Winapi加载MQL4中的DLL失败

问题描述 投票:0回答:1

这是我尝试过的脚本::

void OnStart()
  {
   int handle = LoadLibraryW("C:\\Users\\jaffer\\AppData\\Roaming\\MetaQuotes\\Terminal\\lbdgfdgskjdfgsk\\MQL5\\Libraries\\MtGuiController.dll");
   if(handle>0)
     {
      Print("handle found: ", handle);
      uchar p[];
      StringToCharArray("ShowForm",p);
      long proc = GetProcAddress(handle, p);
      if(proc>0)
        {
         Print("Process Found: ", proc);
        }
      else
         Print("Did not find process: ", GetLastError());
     }
   else
      Print("Did not find library: ", GetLastError());
   if(handle>0)
      FreeLibrary(handle);

  }

出现以下错误:

testingLibrary EURUSD,M1: handle found: 1639776256
testingLibrary EURUSD,M1: stack damaged, check DLL function call in 'testingLibrary.mq5' (22,19)
testingLibrary EURUSD,M1: uninit reason 0

我不明白为什么我无法从dll文件加载功能?

我没有使用WinAPI的丰富经验。这就是我尝试过的。

使用:

#import  "MtGuiController.dll"
void ShowForm(string assembly_path, string form_name);
void HideForm(string assembly_path, string form_name);
void SendEvent(string el_name, int id, long lparam, double dparam, string sparam);
void GetEvent(int index, string &element_name, int &elemnet_id, long &element_lparam, double &element_dparam, string &element_sparam);
void Exit();
int EventsTotal();
#import

我能够加载功能,但是我使用winapi的唯一原因是,当删除EA或脚本时,dll无法释放。请让我知道我能做什么。我正在MQL4中尝试相同的方式。因此,答案可能是MQL4 / MQL5。

winapi dll mql4 mql5
1个回答
0
投票

将dll复制到项目文件夹并使用以下代码加载:

HMODULE handle = LoadLibrary("MtGuiController.dll");

我推荐此代码。

© www.soinside.com 2019 - 2024. All rights reserved.