嘿,每个人我都有一个问题,我主要使用python进行编程,实际上已经有一段时间了,因为我不时使用C#编码,而我时不时地使用mql编码。我的问题是我建立了一个具有几个简单功能的C#dll文件:
[DllExport("debugger", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
public static string debugger()
{
return "Send help!! SOS";
}
[DllExport("debugger2", CallingConvention = CallingConvention.StdCall)]
public static int debugger2()
{
return 12345;
}
这是我C#文件中的简单代码,它们都在公共静态类中,而Solution平台是x64。代码编译就很好,我没有发现任何问题。现在这就是我的MetaEditor代码的样子:
#import "simpleFunctions.dll"
string debugger();
int debugger2();
#import
int OnInit()
{
//Print a statement just to show where code crashes
Print("We are definitly in it :D");
Print(debugger);
}
从《日刊》告诉我的一切都很好,可以从库中添加文件,并且在OnInit函数开头的print语句也可以运行。问题是从我的dll文件中的第一个调试器函数调用时出现的,该日志文件恰好位于日志中我的Print语句下方,出现以下错误:
- Cannot find 'debugger', in 'simpleFunctions.dll'
- unresolved import function call
- OnInit critical error
- tester stopped because OnInit failed
我在整个互联网上进行搜索,这令我不满意,因为我发现没有人真正以实际方式回答这个问题。我怀疑错误可能出在C#方面,涉及数据类型差异,但我真的不知道从哪里继续看。任何帮助将不胜感激。
在可能搜索了每个网站的有关我的问题的答案之后,切换回python并尝试以另一种方式连接到mql5(使用套接字),而不是最后尝试使用C ++并花费了最后两天的学习时间,我想终于解决了我的问题。仅发布此内容可帮助将来可能会遇到类似问题的任何人。我发现,由于MQL5比C#更像C ++,所以链接过程会更容易一些。它本身的代码一点也不复杂,因为我只是想让功能从C ++在MQL5中运行。