从dll中调用函数并返回结果 - 页 6 1234567 新评论 Forex Trader 2005.09.05 23:37 #51 那个f1论坛 Mike = Terranin = 我 :)而且我已经在Alpari论坛上给了你仿真器。我对MTS不感兴趣,如果你知道他们有多少人在我的模拟器上崩溃了......:) Forex Trader 2005.09.06 01:18 #52 2麦克 :))我也是这么想的。如果你有兴趣,你可以在这里看到我的系统 http://forum.alpari-idc.ru/viewtopic.php?t=45555 当然,这有点乱... 如果你愿意,我可以描述一下这个系统,因为你在仿真器方面帮助了我。 Forex Trader 2005.09.06 03:50 #53 好的,如果你想分享,那就给murdoc(at)newmail.ru。我将在我的测试器上运行它,并让你知道结果。 Forex Trader 2005.09.09 21:27 #54 Renat:<br / translate="no"> 默认情况下,任何从DLL导入的行为都是完全禁止的。这就是保护。 如果你想使用外部DLL,只需启用 "确认每个DLL函数调用 "按钮,看看那里调用的是什么。这也是保护。以及保护所有的嵌入式文件操作,只允许访问/history和/files目录。 如果有人用他的DLL向公众提供专家顾问,用户要么相信这个DLL,要么不相信。如果他不信任它,他就不会下载它。 如果他信任它,他就必须勾选 "允许导入DLL功能",否则专家将无法工作。你所调用的函数名称对专家顾问也没有帮助,因为为了了解一个函数的作用,你将不得不拆解DLL,而不是每个人都能做到这一点。而在这个DLL中,你可以做很多讨厌的事情,而MT终端无法阻止它。所以 "保护 "是非常相对的,在这种情况下不是真正的保护。我想这就是麦克的意思。 在MT 4 Expert Advisors中可以从用户DLLs中调用函数,这被定位为替代MT 3中的API。因此,所有这些,都有机会将MT 4终端变成数据输入和下单,这也是API被删除的原因之一(从论坛上的各种主题来看)。但API仍然存在,这让人很不舒服,很多用户都在谈论这个问题,这让人想起了笑话中的情况:"....我不在乎,只要你厌倦了就行。"。而这个话题就是对这一点的确认。提交人的问题没有得到任何具体而翔实的答复。这些问题也与我有关,答案更有意义 :-)。 也许我也不是一个有经验的程序员,但在目前的专家顾问<->DLL系统中,根据定义,你不可能有一个简单而漂亮的解决方案。更确切地说,在MQL4的范围内,可能有一个漂亮的解决方案,但在MT4终端与定制软件的整合范围内,可以说是一无所有。还有其他更实用的解决方案,你只需要找到它们:-)。例如,我们可以创建一个带有mtapi.dll中的功能的DLL,但它不是与交易中心的服务器交互,而是与客户电脑上的客户终端交互。在这种情况下,开发者的利益将得到保护(没有MT4终端,DLL将无法运行),而那些能够创建比MQL4专家顾问更复杂的东西的人,将有一个很好的 机会将他们自己的软件(包括他们自己的gui)与交易系统整合。如果已经考虑和讨论过这样的变体,请给我一个链接(我没有遇到过这样的变体)。如果没有,我想知道开发者对这个问题的看法。 P.S. 交易终端描述中的 "使用客户端API的可能性 "一行非常有吸引力。这就是MetaTrader吸引我的地方,而我对第四版终端缺乏API感到非常失望。我希望,一方的开发者和另一方的API用户能够达成妥协。目前的状况(从Ekperts调用DLL函数)是不令人满意的。 Forex Trader 2005.09.19 19:37 #55 我遇到了一个问题,当然我可能太慢了,我没有弄清楚.....。 我有一个为VC++编译的dll 有一个功能。 void __stdcall process_arr(double *in, double *out, int size)。 在专家顾问中,有如下声明。 #import "some.dll" void process_arr(double in[], double& out[], int size)。 接下来声明数组。 double arr1[100]; double arr2[100]; 然后我初始化第一个数组,并将这两个数组传递给函数 process_arr(arr1,arr2,100)。 一切都已通过,但函数拒绝返回 从该函数返回后,我输出测试值。 打印(arr2[1])。 并在日志中出现以下条目 2005.09.19 18:30:03 arrtest EURUSD,H1: 2147483647 这不是重点,2^31.... 和它有什么关系? 对数组中的 任何其他元素 的工作方式都是一样的。 尽管在退出函数之前,在调试器下,输出数组中的值是他们应该有的(接近于价格-~1.2)。 Calling functions from the Reading price, volume, spread, 非广延统计分布结构化分析的本征坐标法应用 Forex Trader 2005.09.19 20:10 #56 2147483647这个数字似乎非常接近于零。 确切地说,是2^31-1,这应该像零。 Forex Trader 2005.09.19 20:53 #57 void __stdcall process_arr(double *in, double *out, int size); <br / translate="no"> 以下是专家顾问中的声明。 #import "some.dll" void process_arr(double in[], double& out[], int size)。 只是一个建议(因为我 对MQL不熟悉):第二个参数是否真的需要&? void process_arr(double in[], double& out[], int size)。 Forex Trader 2005.09.19 21:51 #58 对Rosh来说,那是真的,但我们谈论的是双数类型,那里的数字表示 "稍微 "不同,2^31与0.... 相差甚远。:( 对VicK来说,逗号是全部的重点,由于它,我可以实际改变数组的内容...... 第二个数组是一个包含返回值的数组 Forex Trader 2005.09.19 22:32 #59 对VicK来说,安培符是重点,它是我改变数组内容的唯一方法......<br / translate="no"> 第二个数组是一个带有返回值的数组 在这种情况下,安培尔没有本质意义(我自己刚试过),你可以通过其他东西来改变数组的内容:-)。你看了目录中的DLL例子吗?那里的一切工作都很顺利。以同样的方式来做。 Forex Trader 2005.09.19 22:46 #60 如果我们处理double[]类型 的数组,看起来安培号没有任何区别。 但用int[]时一切正常。我怀疑这里开始闻到了bug....。:( 我想知道开发者的意见 如果这东西有源代码,没有人会去管它,但是......。去吧,我在呼救。 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
Mike = Terranin = 我 :)而且我已经在Alpari论坛上给了你仿真器。我对MTS不感兴趣,如果你知道他们有多少人在我的模拟器上崩溃了......:)
:))我也是这么想的。如果你有兴趣,你可以在这里看到我的系统
http://forum.alpari-idc.ru/viewtopic.php?t=45555
当然,这有点乱...
如果你愿意,我可以描述一下这个系统,因为你在仿真器方面帮助了我。
如果你想使用外部DLL,只需启用 "确认每个DLL函数调用 "按钮,看看那里调用的是什么。这也是保护。以及保护所有的嵌入式文件操作,只允许访问/history和/files目录。
如果有人用他的DLL向公众提供专家顾问,用户要么相信这个DLL,要么不相信。如果他不信任它,他就不会下载它。 如果他信任它,他就必须勾选 "允许导入DLL功能",否则专家将无法工作。你所调用的函数名称对专家顾问也没有帮助,因为为了了解一个函数的作用,你将不得不拆解DLL,而不是每个人都能做到这一点。而在这个DLL中,你可以做很多讨厌的事情,而MT终端无法阻止它。所以 "保护 "是非常相对的,在这种情况下不是真正的保护。我想这就是麦克的意思。
在MT 4 Expert Advisors中可以从用户DLLs中调用函数,这被定位为替代MT 3中的API。因此,所有这些,都有机会将MT 4终端变成数据输入和下单,这也是API被删除的原因之一(从论坛上的各种主题来看)。但API仍然存在,这让人很不舒服,很多用户都在谈论这个问题,这让人想起了笑话中的情况:"....我不在乎,只要你厌倦了就行。"。而这个话题就是对这一点的确认。提交人的问题没有得到任何具体而翔实的答复。这些问题也与我有关,答案更有意义 :-)。
也许我也不是一个有经验的程序员,但在目前的专家顾问<->DLL系统中,根据定义,你不可能有一个简单而漂亮的解决方案。更确切地说,在MQL4的范围内,可能有一个漂亮的解决方案,但在MT4终端与定制软件的整合范围内,可以说是一无所有。还有其他更实用的解决方案,你只需要找到它们:-)。例如,我们可以创建一个带有mtapi.dll中的功能的DLL,但它不是与交易中心的服务器交互,而是与客户电脑上的客户终端交互。在这种情况下,开发者的利益将得到保护(没有MT4终端,DLL将无法运行),而那些能够创建比MQL4专家顾问更复杂的东西的人,将有一个很好的 机会将他们自己的软件(包括他们自己的gui)与交易系统整合。如果已经考虑和讨论过这样的变体,请给我一个链接(我没有遇到过这样的变体)。如果没有,我想知道开发者对这个问题的看法。
P.S. 交易终端描述中的 "使用客户端API的可能性 "一行非常有吸引力。这就是MetaTrader吸引我的地方,而我对第四版终端缺乏API感到非常失望。我希望,一方的开发者和另一方的API用户能够达成妥协。目前的状况(从Ekperts调用DLL函数)是不令人满意的。
我有一个为VC++编译的dll
有一个功能。
void __stdcall process_arr(double *in, double *out, int size)。
在专家顾问中,有如下声明。
#import "some.dll"
void process_arr(double in[], double& out[], int size)。
接下来声明数组。
double arr1[100];
double arr2[100];
然后我初始化第一个数组,并将这两个数组传递给函数
process_arr(arr1,arr2,100)。
一切都已通过,但函数拒绝返回
从该函数返回后,我输出测试值。
打印(arr2[1])。
并在日志中出现以下条目
2005.09.19 18:30:03 arrtest EURUSD,H1: 2147483647
这不是重点,2^31.... 和它有什么关系?
对数组中的 任何其他元素 的工作方式都是一样的。
尽管在退出函数之前,在调试器下,输出数组中的值是他们应该有的(接近于价格-~1.2)。
确切地说,是2^31-1,这应该像零。
以下是专家顾问中的声明。
#import "some.dll"
void process_arr(double in[], double& out[], int size)。
只是一个建议(因为我 对MQL不熟悉):第二个参数是否真的需要&?
void process_arr(double in[], double& out[], int size)。
对VicK来说,逗号是全部的重点,由于它,我可以实际改变数组的内容......
第二个数组是一个包含返回值的数组
在这种情况下,安培尔没有本质意义(我自己刚试过),你可以通过其他东西来改变数组的内容:-)。你看了目录中的DLL例子吗?那里的一切工作都很顺利。以同样的方式来做。
但用int[]时一切正常。我怀疑这里开始闻到了bug....。:(
我想知道开发者的意见
如果这东西有源代码,没有人会去管它,但是......。去吧,我在呼救。