如何解决无法加载“mcMath.dll”[126]
本文关键字:dll mcMath 加载 何解决 解决 | 更新日期: 2023-09-27 17:56:38
我在C#
写了这个简单的.DLL
namespace mcMath
{
public class Class1
{
public static double addUp(double num1, double num2)
{
return (num1 + num2);
}
}
}
当我尝试将此.DLL
文件#import
到 MetaTrader4 平台MQL4
代码时,出现错误:
Cannot load 'mcMath.dll' [126]
.
10:55:17.373 Expert fadi EURUSD,H4: loaded successfully
0 10:55:17.689 Expert fadi EURUSD#,H1: loaded successfully
3 10:55:19.224 Cannot load 'mcMath.dll' [126]
0 10:55:19.225 fadi EURUSD,H4: initialized
3 10:55:24.027 Cannot load 'mcMath.dll' [126]
0 10:55:24.028 fadi EURUSD#,H1: initialized
1 10:55:27.463 Cannot call 'mcMath.dll::addUp', 'mcMath.dll' is not loded
1 10:55:27.494 fadi EURUSD#,H1: unresolved import function call
0 10:55:27.522 fadi EURUSD#,H1: uninit reason 4
0 10:55:27.538 Expert fadi EURUSD#,H1: removed
我已经允许在平台选项中导入DLL
。
Q1:
有人有同样的问题吗?
Q2:
如何解决?
MQL4
代码:
#import "mcMath.dll"
double addUp(double number1,double number2);
#import
double number1, number2;
int OnInit()
{
//---
number1=10.5;
number2=20.3;
double number3= addUp(number1,number2);
Print("the result is: " + number3);
//---
return(INIT_SUCCEEDED);
}
A1: 不,这个问题没有任何通用的答案。
A2:让我们创建一个必须满足的项目清单,以便从 DLL #import
:
- MetaTrader4 终端允许使用(导入)从 DLL ...通过
- 所述DLL文件的位置...待定
- DLL 导出函数的调用签名匹配...待定
为了 [2],请始终检查是否已将包含所选 DLL 的文件放入<TerminalDir>/MQL4/Libraries
文件夹中。
为了隔离 [3],请始终使用简单的、无参数的集成测试函数,并在MQL4
代码中验证正确的返回值int test_DLL_LOADED(){ return( 1 ); }
:
#import "<aDllFileNAME>" // MQL4 pre-processor directive
int test_DLL_LOADED(); // DLL parameter-less signature
... // other signatures of import'd f()
#import // MQL4 pre-processor directive
int OnInit(){
if ( !test_DLL_LOADED() ){
// FAILED: // CLOSE ALL FILE-IOs
// SEND SIGs / MESSAGEs TO PEERs
// UPDATE GLOBAL VARIABLEs
// LOG EVENT
// GET READY FOR A GRACEFUL EXIT
...
// EXIT:
ExpertRemove();
}
// PASSED: PROCEED WITH A NEXT INTENDED SETUP STEP
...
}