#import "MemMap32.dll"int MemRead(HANDLE32 hmem, int &v[], int pos, int sz, int &err); // чтение вектора v с указанной позиции pos размером sz#import "MemMap64.dll"int MemRead(HANDLE64 hmem, int &v[], int pos, int sz, int &err); // чтение вектора v с указанной позиции pos размером sz#import
// переопределяем вызовы для контроля битностиint MemRead(HANDLE64 h, int &v[], int pos, int sz, int &error) { if (_IsX64) return(MemMap64::MemRead(h, v, pos, sz, error)); return(MemMap32::MemRead((HANDLE32)h, v, pos, sz, error)); }
2013.12.19 18:49:01.437 do (EURUSD,H1) TEST 2013.12.19 18:49:01.436 do (EURUSD,H1) Cannot load 'E:\MT5_REV1\Client\MetaTrader5Terminal\Final\MQL5\Libraries\test.dll' 2013.12.19 18:48:58.929 do 'E:\MT5_REV1\Client\MetaTrader5Terminal\Final\MQL5\Libraries\test.dll' is not 64-bit version
该库没有被加载,但在其函数被调用之前,一切都在工作(TEST输出)。
现在我们调用这种库的功能。
2013.12.19 18:51:07.446 do (EURUSD,H1) unresolved import function call 2013.12.19 18:51:07.446 do (EURUSD,H1) Cannot call 'fnCrashTest', 'test.dll' is not loaded 2013.12.19 18:51:07.445 do (EURUSD,H1) Cannot load 'E:\MT5_REV1\Client\MetaTrader5Terminal\Final\MQL5\Libraries\test.dll' 2013.12.19 18:51:05.107 do 'E:\MT5_REV1\Client\MetaTrader5Terminal\Final\MQL5\Libraries\test.dll' is not 64-bit version
我不这么认为,你不可能通过OBJ_TEXT 推送兆字节的信息。
最接近的候选人是资源
注意:一个点实际上是一个由不同类型的变量组成的结构。它在你关闭/打开终端时被保存,也被保存在一个模板中。
注意:一个点实际上是一个由不同类型的变量组成的结构。它在你关闭/打开终端时被保存,也被保存在模板中。
我一直在问,你找到DLL 32/64的解决方案了吗?
系统里有个什么WOW32reg.exe(\System32\)。 我绕来绕去,它对-h-?没有反应,我无法盲目地注册什么。
谷歌也不说话,我在microsoft.com上找不到任何东西......所以这很不错。
?
有什么不清楚的?给我一个具体的任务,但都是迂回的方式......?
我一直在问,你找到DLL 32/64的解决方案了吗?
系统里有个什么WOW32reg.exe(\System32\)。 我绕来绕去,它对-h-?没有反应,我无法盲目地注册什么。
谷歌也不说话,我在microsoft.com上找不到任何东西......总的来说,它是急性子。
所以,只是一个想法,我自己还没有试过。在检测到终端的比特深度后,使用LoadLibrary动态加载DLL。
我一直在问,你是否已经找到了DLL 32/64的解决方案?
这里有什么问题呢?
在导入 时,你指定两个相同的函数,只是参数不同(int/long)。在程序中,根据32/64位的情况,你调用相应的函数。
我一直在问,你是否已经找到了DLL 32/64的解决方案?
感谢上下文 :: 一切都解决得很整齐。
在导入时,你指定两个相同的函数,只是参数不同(int/long)。在程序中,根据32/64位的情况,你调用相应的函数。
例如,像这样。
在你用明确的:: 上下文调用的代码中。::MemRead(...)
也就是说,我们不对函数名称进行乘法,而是对比特率进行自动检测并调用正确的导入函数。
我一直在想,你是否已经找到了32/64 DLL的解决方案?
最简单的方法是将同名的x32和x64 DLL放入不同的Windows系统目录--SysWOW64和System32,分别。
但程序间的数据交换 确实是个问题,特别是如果你胡乱处理的话。
因此,可能是推理和微软,当在上个世纪九十年代,从文件,流交换对象 - OLE从它到ActiveX -> COM -> COM + -> .NET,即基于程序间交换的技术已经创建了一个新的编程和代码执行系统。
这里有什么问题呢?
在导入时,你指定两个相同的函数,只是参数不同(int/long)。在程序中,你根据32/64的比特大小调用适当的函数。
它根本不想加载32位的,即使我已经不打算调用它(dll),它也不想运行这个程序。
如果"允许使用DLL"没有被选中,[OK]按钮根本不显示,只是被取消。 允许,点击OK - 程序崩溃。 死锁。
理想情况下,我希望能够在x64终端中调用dll32,我知道理论上是可行的,但我不知道怎么做。
它根本不想加载32位的,即使我不打算再调用它(dll),它也不想运行程序。
当"Allow dll"未被选中时,[OK]按钮根本不显示,只有取消。 允许,点击OK--程序崩溃。 死锁。
理想情况下,我希望能够在x64终端中调用dll32,我知道理论上是可行的,但我不知道怎么做。
2013.12.19 18:49:01.436 do (EURUSD,H1) Cannot load 'E:\MT5_REV1\Client\MetaTrader5Terminal\Final\MQL5\Libraries\test.dll'
2013.12.19 18:48:58.929 do 'E:\MT5_REV1\Client\MetaTrader5Terminal\Final\MQL5\Libraries\test.dll' is not 64-bit version
现在我们调用这种库的功能。
2013.12.19 18:51:07.446 do (EURUSD,H1) Cannot call 'fnCrashTest', 'test.dll' is not loaded
2013.12.19 18:51:07.445 do (EURUSD,H1) Cannot load 'E:\MT5_REV1\Client\MetaTrader5Terminal\Final\MQL5\Libraries\test.dll'
2013.12.19 18:51:05.107 do 'E:\MT5_REV1\Client\MetaTrader5Terminal\Final\MQL5\Libraries\test.dll' is not 64-bit version