文章 "摆脱自制的 DLL" - 页 4 1234 新评论 fxsaber 2025.12.11 16:20 #31 Maxim Kuznetsov #:最后一个参数(即 cnt)也是 64 位。它是 size_thttps://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/memcpy-wmemcpy 谢谢。 fxsaber 2025.12.11 16:22 #32 Maxim Kuznetsov #:当然有......原型是 4 位的(32 位地址,类似无符号 int),而编译/运行是 5 位的(64 位)。 弱智,我之前就是 通过 longs写 的。 #define MEMCPY_MACROS(A) \ long memcpy( const long Destination, const A &Source[], const uint Length ); \ long memcpy( A &Destination[], const long Source, const uint Length ); Edgar Akhmadeev 2025.12.11 16:55 #33 Edgar Akhmadeev #:我忽略了 64 位地址的问题。但使用更正后的地址时,我还是会崩溃。它真的能工作吗?我能看看修正后的 fxsaber 代码的完整示例吗?到目前为止,我仍然认为 WinAPI 的地址与 MQL 不兼容。 我发现了一个错误,这就是为什么更正后的版本对我不起作用。我打错了一个字,漏了一个地方。 我的观点改变了,谢谢大家。 Edgar Akhmadeev 2025.12.11 18:11 #34 顺便说一句,MS 认为memcpy 函数不安全且已过时,建议用 memcpy_s 代替。此外,第一个参数不是常量。所以结果是 #define DEF_MEMCPY_S(T) \ ulong memcpy_s(T &dst, ulong size, const ulong src, ulong cnt); \ ulong memcpy_s(T &dst[], ulong size, const ulong src, ulong cnt); \ ulong memcpy_s(T &dst, ulong size, const T &src[], ulong cnt); \ ulong memcpy_s(T &dst[], ulong size, const T &src[], ulong cnt); #import "msvcrt.dll" DEF_MEMCPY_S(char) DEF_MEMCPY_S(uchar) DEF_MEMCPY_S(int) DEF_MEMCPY_S(uint) DEF_MEMCPY_S(long) DEF_MEMCPY_S(ulong) #import void OnStart() { int Array[]; ArrayResize(Array, 1); Array[0] = 123; int Value1 = 0; int Value2 = 0; ulong Address = memcpy(Array, 0, 0); memcpy_s(Value1, sizeof(int), Address, sizeof(int)); memcpy_s(Value2, sizeof(int), Array, sizeof(int)); Print(Value1, " ", Value2); } Denis Kirichenko 2025.12.11 23:39 #35 有趣的例子。请教行家一个问题。有可能获取任何类的向量、矩阵或对象的地址吗? Maxim Kuznetsov 2025.12.12 04:23 #36 Denis Kirichenko #:有趣的例子。请教行家一个问题。有可能获取任何类的向量、矩阵或对象的地址吗? 没有 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
最后一个参数(即 cnt)也是 64 位。它是 size_t
https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/memcpy-wmemcpy
谢谢。
当然有......原型是 4 位的(32 位地址,类似无符号 int),而编译/运行是 5 位的(64 位)。
弱智,我之前就是 通过 longs写 的。
我忽略了 64 位地址的问题。但使用更正后的地址时,我还是会崩溃。它真的能工作吗?我能看看修正后的 fxsaber 代码的完整示例吗?
到目前为止,我仍然认为 WinAPI 的地址与 MQL 不兼容。
我发现了一个错误,这就是为什么更正后的版本对我不起作用。我打错了一个字,漏了一个地方。
我的观点改变了,谢谢大家。
顺便说一句,MS 认为memcpy 函数不安全且已过时,建议用 memcpy_s 代替。此外,第一个参数不是常量。所以结果是
有趣的例子。请教行家一个问题。有可能获取任何类的向量、矩阵或对象的地址吗?
有趣的例子。请教行家一个问题。有可能获取任何类的向量、矩阵或对象的地址吗?
没有