Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用带有32个Borland C++;建设者_C++_Dll_64 Bit_C++builder - Fatal编程技术网

C++ 使用带有32个Borland C++;建设者

C++ 使用带有32个Borland C++;建设者,c++,dll,64-bit,c++builder,C++,Dll,64 Bit,C++builder,我需要创建一个包含超过4GB数据的“数据池”,以二维数据阵列的形式组织: 我有一个50位表单应用程序,在32位的代码齿轮2009 C++ + Builder中有许多第三方VCL组件,因此现在不可能迁移到VisualStudio 2010(现在)。p> 其思想是使用一个包含数据数组的64位DLL(由Visual Studio 2010?或Delphi EX2?制作)——其思想是使用数组中数据位置的x,y参数调用64位DLL,DLL从数组返回值 以前有人这样做过吗?是否可以调用来自C++ Build

我需要创建一个包含超过4GB数据的“数据池”,以二维数据阵列的形式组织:

我有一个50位表单应用程序,在32位的代码齿轮2009 C++ + Builder中有许多第三方VCL组件,因此现在不可能迁移到VisualStudio 2010(现在)。p> 其思想是使用一个包含数据数组的64位DLL(由Visual Studio 2010?或Delphi EX2?制作)——其思想是使用数组中数据位置的x,y参数调用64位DLL,DLL从数组返回值

以前有人这样做过吗?是否可以调用来自C++ Builder的64位DLL,init代码在运行时动态加载DLL的方式是什么样子?p>
非常感谢您的任何输入,因为这是一个显示停止。

32位程序无法加载64位DLL。DLL被加载到正在运行的进程中,整个进程是32位或64位的。您最多可以创建一个单独的64位应用程序,然后从32位应用程序启动它;然后,你可以让两个人以你喜欢的任何方式进行交流

考虑到您列出的约束条件,您的最佳选择是使用进程外COM服务器。您的32位C++Builder应用程序无法加载64位模块。这是一个难以逾越的限制。这为您提供了某种形式的进程间通信,进程外COM将是最容易编码的。

感谢hvd-因此,问题缩小到如何以最小的开销在两个应用程序(32位和64位应用程序)之间最好地交换一个值(int/float/double)。关于哪种方法可以提供最快的价值“交流”有什么建议吗?不知道,抱歉,但是开销真的会成为问题吗?您不会发送一条消息/调用一个函数/。。。对于要检索的每个字节。使用对您来说最容易编程的程序,使用您最有经验的程序。“COM服务器”可能意味着将涉及Windows和一系列进程,其中应该是将浮点值从应用程序a简单地传输到应用程序B,可能需要100.000条指令才能获得浮点值?嗯,你到底想不想解决这个问题?如果没有64位进程,就无法突破32位地址空间限制!另一种方法是将数据保存在硬盘上,但这太慢了。如果我将指向内存位置的指针传递给64位DLL,则会出现64位地址问题-一种可能的解决方案是使用数组中的row,coulmn(而不是内存指针)调用DLL,并且DLL返回数组值,不是指向内存位置的指针。是否使用已知的Windwos API内存位置来传递数据?例如图形、键盘、-任何全局可访问的Windows API参数,并且使用直接指针而不是函数调用?DLL可以钩住Windowes API调用,因此32位的allication调用钩住的函数(64位DLL中的函数),DLL返回Windows API内存位置中的值?您无法加载DLL。您可以与内存映射文件共享内存,但必须同步并发送信号。进程外COM是您的最佳选择。你的期望太高了。