Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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++ 将QT 32位库与64位应用程序(MinGW64编译器)链接?_C++_Qt_Linker_Qt4_64 Bit - Fatal编程技术网

C++ 将QT 32位库与64位应用程序(MinGW64编译器)链接?

C++ 将QT 32位库与64位应用程序(MinGW64编译器)链接?,c++,qt,linker,qt4,64-bit,C++,Qt,Linker,Qt4,64 Bit,大家好, 在我的应用程序中,我需要分配超过4GB内存地址空间的内存。因此,我需要以64位编译我的应用程序 我的开发环境是Qt32位库(LGPL),将使用MinGW64编译64位构建。 由于QT不支持MinGW64(仅支持32位),我可以将32位QT库与64位应用程序链接起来吗 提前谢谢。不,你不能。64位进程无法加载32位DLL。@umanga 我的回答并没有回答您的问题,但它可能会详细说明您实际想要做什么——使用MinGW-w64构建Qt 64位库 正如MSalters所建议的,将Qt移植到6

大家好,

在我的应用程序中,我需要分配超过4GB内存地址空间的内存。因此,我需要以64位编译我的应用程序

我的开发环境是Qt32位库(LGPL),将使用MinGW64编译64位构建。 由于QT不支持MinGW64(仅支持32位),我可以将32位QT库与64位应用程序链接起来吗


提前谢谢。

不,你不能。64位进程无法加载32位DLL。

@umanga 我的回答并没有回答您的问题,但它可能会详细说明您实际想要做什么——使用MinGW-w64构建Qt 64位库

正如MSalters所建议的,将Qt移植到64位环境可能更简单。此外,Qt4.7与当前的MinGW-w64兼容率为99.99%。今天早上,我自己刚刚尝试使用MinGW-w64构建Qt4.7(包括Webkit,但Phonon没有)


您只需修改一行Qt源代码即可获得成功的Qt构建。“毕竟,它是开源的。”中提供了详细的步骤。

+1。如果您仔细想想,这是有道理的——如果/当您将64位指针交给32位代码时,它会做什么;)我在应用程序数据结构中只使用64位指针。我不会干扰32 QT库。所以我认为,虽然我的应用程序使用64位地址空间,但32位QT库只能使用32位地址空间。@umanga:仍然无法做到,如果您想知道为什么,每个进程都有某些CPU定义的结构,其中包括,在执行该进程时,确定CPU处于何种模式(64位/32位)。dll只是在运行时将代码/数据加载到进程的地址空间中,应用程序只有一个地址空间,并且只能处于一种模式。从技术上讲,Microsoft在从Win16切换到Win32(thunking)时也做了类似的事情。委婉地说,这很难看,但它是可以做到的。然而,thunking需要手工操作,而且将Qt移植到64位环境可能要容易得多——毕竟,它是开源的。@MSalters:是的,thunking是一个可行的选择,但正如您所提到的,它很难看,而且通常是个坏主意。需要注意的一点是,Qt不需要移植到64位,它已经可以正常工作了。但乌曼加可能不得不自己编译。我不知道他们是否为windows提供64位二进制文件。嗨,pinyote。谢谢你的回答。事实上,我在你的博客中问过这个问题:)