将C#DLL导入MQL5的噩梦

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

嘿,每个人我都有一个问题,我主要使用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#方面,涉及数据类型差异,但我真的不知道从哪里继续看。任何帮助将不胜感激。

c# dll dllimport mql5
1个回答
0
投票

在可能搜索了每个网站的有关我的问题的答案之后,切换回python并尝试以另一种方式连接到mql5(使用套接字),而不是最后尝试使用C ++并花费了最后两天的学习时间,我想终于解决了我的问题。仅发布此内容可帮助将来可能会遇到类似问题的任何人。我发现,由于MQL5比C#更像C ++,所以链接过程会更容易一些。它本身的代码一点也不复杂,因为我只是想让功能从C ++在MQL5中运行。

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