int _TRANS2QUIK_CONNECT@16(string lpcstrConnectionParamsString, int& pnExtendedErrorCode[], string lpstrErrorMessage, int dwErrorMessageSize);
В новом компиляторе mt4 можно только так
int _TRANS2QUIK_CONNECT(string lpcstrConnectionParamsString, int& pnExtendedErrorCode[], string lpstrErrorMessage, int dwErrorMessageSize);
В h файле который есть в архиве с dll написано так long TRANS2QUIK_API __stdcall TRANS2QUIK_CONNECT (LPSTR
lpstConnectionParamsString,long* pnExtendedErrorCode, LPSTR lpstrErrorMessage, DWORD dwErrorMessageSize);
你有没有试过把一个字符串滑成#define str "longlong string",甚至是通过+或string函数滑成两个字符串。
毕竟,Comment在字符串的长度上也是有限制的,但变量可以塞得很满,以至于在显示器上装不下几行。
谢谢,的确是速记法,编译器确实能理解,但不接受带@的解码函数(我想这是它的名字)。而旧的编译器接受这样的函数,但不增加到导入替换中去,从字面上看是这样的。如果我像dll文档中那样导入函数,即 "TRANS2QUIK_CONNECT "而不是"_TRANS2QUIK_CONNECT@16",则返回2(TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND)。我不明白其中的区别。
谢谢,减法确实有效,编译器确实理解,但不接受带@的解码函数(我想这是它的名字)。而旧的编译器接受这样的函数,但不增加到导入替换中,从字面上看是这样的。如果我像dll文档中那样导入函数,即 "TRANS2QUIK_CONNECT "而不是"_TRANS2QUIK_CONNECT@16",则返回2(TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND)。我不明白其中的区别。
我不知道文档中哪里有这么说,但通配符前面必须有一个斜线。这就是为什么地址行应该看起来像这样:C:\folder\file
所以试着这样写:"_TRANS2QUIK_CONNECT\@16"
实际上,我对.dlls不是很在行。因此,如果这不起作用,那么...
@Maxim Kuznetsov 我在WinHex和Dependency Walker中打开了dll,它生成了Ordinal、Hint、Function、Entry Point,它生成了像(_TRANS2QUIK_CONNECT@16) 这样的函数名称,有了它们,老的编译器就能工作,并返回dll结果。你是指这些象征性的名字吗?
@Alexey Viktorov 我自己也不是编程专家,但我不多的知识足以处理我的想法。Shielding\ does not work.
在python中发现自动代理dll生成器 https://github.com/mavenlin/Dll_Wrapper_Gen 。我认为这对我来说是有效的,基本上只改变了构建的dll中的函数名称。 试着在没有改变的情况下构建它,编译器对函数名称中的@发誓。 产生的cpp文件
生成的def文件的片断
我知道_TRANS2QUIK_CONNECT@16 _wrapper是代理dll中可见的函数名称。 所以我把它削减为CONNECT。dll已经建立,但终端显示TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND。我想这不适合我的大脑。我将不得不手动检查交易系统,并在那里下单dll。
@Maxim Kuznetsov 我在WinHex和Dependency Walker中打开了dll,它生成了Ordinal、Hint、Function、Entry Point,它生成了像(_TRANS2QUIK_CONNECT@16) 这样的函数名称,有了它们,老的编译器就能工作,并返回dll结果。你是指这些象征性的名字吗?
@Alexey Viktorov 我自己也不是编程专家,但我不多的知识足以处理我的想法。Shielding\ does not work.
在python中发现自动代理dll生成器 https://github.com/mavenlin/Dll_Wrapper_Gen 。我想,如果只改变组装好的dll中的函数名称,基本上就可以了。它为visual studio建立了一个项目。试图在不做修改的情况下构建它 编译器对函数名中的@发誓。生成的cpp文件
生成的def文件的一部分。
我知道_TRANS2QUIK_CONNECT@16 _wrapper是代理dll中可见的函数名称。 所以我把它削减为CONNECT。dll已经建立,但终端显示TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND。我想这不适合我的大脑。我将不得不手动检查交易系统,并在那里下单dll。
你对终端和DLL的比特深度只字未提。而这是很重要的。
@Koldun Zloy 试过Trans2QuikAPI_1.2,它在mt4和quik7下是32位的,还有Trans2QuikAPI_1.3_x64在mt5和quik8下也是64位的。我已经在quik本身启用了外部交易。我以为我导入了错误的功能。我自己写的。
种等价的数据类型。如果它不对,我想它在旧的编译器中就不会工作。
你需要在某一时刻降低测试的速度。手动操作很难抓住所有这样的时刻......
你好!我在MQL5中创建了一个由背景和按钮组成的面板。当我拖动面板时,只有背景移动,而按钮留在原地,只有在下一次打勾时,它们才会在背景后面移动到所需的位置。请告知如何使按钮和背景同时移动。提前感谢!
我们是在谈论测试器还是在线?
如果在线--看一下代码,某处的移动事件没有正常路由。顺便说一下,网站上的面板只有五个不同的库,你是什么意思?
而在测试器中--似乎没有办法,也不知道为什么。