MQL4封杀C++编译的DLL

 

用C编译成的DLL,可以在MT4中使用。如下:

/* --- The following code comes from d:\lccwin32\lib\wizard\dll.tpl. */
#include <stdio.h>
#include <windows.h>

int __declspec(dllexport) get_num(int n)
{
return n*2;
}
//-------------------------------------------------

BOOL WINAPI __declspec(dllexport) LibMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
{
    return TRUE;
}

用C++编译成的DLL,在MT4中使用时,无法load。源码如下:

#include "stdafx.h"
#include <stdio.h>

extern "C" __declspec(dllexport) int get_num(int a);

//----------------------------------------------------

 int get_num(int a)
{
    return a*10;
}

//-------------------------------------------------------

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved )
{
    return TRUE;
}

为什么会出现这种情况,是bug还是人为故意?

很不理解。

 

经反复实验证明,完全是人为故意的。

MT4有检查DLL内容的功能。如果有其不允许的内容,无论该DLL是C语言还是C++编译的,一律不准load。

我已经大致猜出了他们为什么要这样做。

 

又经过反复检查,发现可能是我搞错了。

MT4经过自动升级,目录有了新变化,问题出在这里。

 

确认,完全是我搞错了。

现在一切正常,我非常高兴,非常满意。

谢谢!