讨论 "如何在10分钟内为MQL5编写一个DLL并交换数据"。 - 页 8

 
avoitenko:

DLL函数声明

调用 一个DLL函数

正是如此!这正是我所做的。谢谢你!
 

在上一个例子中,你也对dll做了一些修改,对吗?

这就是我的意思。

bool ExcelSetTextCell(int X,int Y, uchar& Value[]);
 

如果不是太麻烦的话,你能不能也给我一个提示。有一个dll,一个文本值被传递给它,输出是一个字符串类型 的数字。

比如说像这样。

#import "n1.dll"
string fData (string a1);
#import

....

string znak = fData ("a");

// При значении "a" переменная znak будет равна например "172371", далее я значение znak конвертирую в int
// Так всё было в МТ4.

由于缺乏知识,我无法修复dll。请告知如何制作一个正确的代码来传递给dll,以及如何正确接收。我有一种感觉,我的程序包在MT5中无法工作。

提前感谢您的帮助。

Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Killa:

如果不是太麻烦的话,你能不能也给我一个提示。有一个dll,一个文本值被传递给它,输出是一个字符串类型 的数字。

由于缺乏知识,我无法修复Dll。请告知如何正确编写代码提交给dll,以及如何正确得到它。因为我的dll现在不能在MT5中工作。

提前感谢您的帮助。

我重新检查了从DLL返回的字符串的工作,发现在x64下有错误(在一些优化后出现)。修复将包括在下一个版本中。

如果你是在x64环境下工作,请等待构建版本。

我唯一可以补充的是,请记住,MQL5可以使用Unicode字符串。

 
简单地说,你必须重写dll...
 
我想感受一下dlls的力量,他们谈了很多。问题很简单,从哪里开始。下载什么,读什么,去哪个论坛,请说5-6点。在这一生中,很多事情都取决于最初的彭德怀。
 
Renat:

发表文章:如何在10分钟内为MQL5编写一个DLL并交换数据?:

作者: Renat Fatkhullin

谢谢你的文章。我已经使用了它。

这个提示非常好。但是!我花了10分钟才搞清楚如何在VS2010中正确设置DLL路径。

结果是这样的。

C:\Users\пп\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries

我建议从MetaEditor复制路径。

或者在环境中指定你自己的路径(没有检查)。

还有一件事,我们如何处理多线程问题?

 

谢谢你的文章。完整地重复了一遍,但我想说一下我在实施过程中遇到的问题--这些看似很小的事情差点让我放弃。我想澄清的是(使用VS2010 + MT5(32位)build 756 + Win 7 Maximum x64)。

  1. 我试着在x64平台上连接它,结果失败了--根据我的理解,原因是隐含地依赖从标准 Windows 创建的DLL,由于某种原因加载了x86库--这不是MQL5的问题,但仍然值得说一下。我通过安装MT5 32bit摆脱了这种情况 - 它是通过命令行 "Installer folder"\mt5setup.exe /32完成的。它将使用x86 DLLs。所以我建议只使用x86,至少在开始时。
  2. MT5以任何方式都找不到一个插件DLL。文章说要把DLL放在终端的Libraries文件夹里,但终端还是看不到它。解决办法如下:只要在系统变量中指定位置,DLL将被存储在哪里并不重要。如何做到这一点将有助于谷歌。

否则,这不是一篇坏文章...尊重!

 

在64位的MT5上,这个例子不起作用。终端报告说它是32位的DLL,没有连接它。但在Win32下(如本例和其他所有例子--如Delphi)--所有DLL都是32位的。像以前的帖子一样,我必须卸载64位版本的终端,然后安装32位版本的。我还需要知道如何做,因为64位版本是强制安装的。事实证明,MT5 64位是一个死的终端,我不知道为什么它被释放。亲爱的开发者,如果可能的话,请使32位DLL与МТ5 64位连接成为可能。

如果这在技术上是不可能的或困难的,就写上这个版本将不能与32位DLL一起工作的隐患,用户会受到影响,不能理解是什么问题。并公开写道,文件夹Libraries不在终端本身的目录中,而且知道在哪里,没有经验就找不到,甚至不要尝试。顺便说一下,在这个秘密的地方有所有的指标和专家,所以安装MT5你可以忘记他们 - 如果你不知道这一切是在一个隐藏的文件夹C:\Users\nAppData\Roaming......或者用户认为他在安装一个写得很好的程序,这就是作弊。

 

你应该提高你的技术水平。

对于64位的程序,你需要64位的库,你没有办法合理地连接32位的库。要安装32位版本,必须用/32开关运行安装程序。

我将重写文章,并加入早已在MetaEditor和MT4、MT5平台上实现的酷炫功能。许多开发者并不了解新的功能。