PDA

View Full Version : 64 bit compatibility



johnmauer
22nd December 2009, 17:07
I am rebuilding an older 32 bit app (now in MFC) with Qt, but I have customers who are moving to 64 bit Windows. Are the 32 bit Qt libraries compatible with 64 bit Windows? What precautions need to be taken in design to allow the source to be compiled with both compilers? Any links on this issue would be appreciated. I searched on 64 bit and got nothing. Thanks.

franz
22nd December 2009, 21:54
Applications on 64 bit machines can still use 32 bit libraries. I think the application has to be 32 bit as well, not sure about that. Obviously it is possible to rebuild the Qt libraries for 64 bit targets.

faldzip
23rd December 2009, 09:34
I'm programming application on Windows7 64bit (previously Vista Business 64bit) with Qt compiled with VS2005 for 32bit and it's working ok on my system but once I faced problem with "Application configuration is incorrect" when trying to run my application on WinXP. But going in another direction is ok (I used to program on WinXP 32bit and it was working in Vista 64bit with no problems). I also compiled Qt for x64 on my Windows7 with no problems and done some simple apps for x64. The problem is when you need some 3rd party libraries and they are 32bit only - linker complains when trying to build app for x64 and link with x86 libraries.

I noticed some performance gain in x64 application (compared x64 version on Vista x64 with x86 version on WinXP 32bit), even 30% faster with some simple but time consuming alghoritm. But running 32bit app on x64 Windows can result in performance loss (didn't measure but sometimes it is noticeable but nothing serious) because of running apps on WoW64 -> Windows on Windows64.

johnmauer
25th December 2009, 13:56
Thanks, I appreciate the response. I'm programming on WinXp with VS 2008 because Vista(32 bit) had too many problems. I, too, have had problems with 3rd party libraries that would not work on 64 bit, which is why I asked the question.

Tanuki-no Torigava
25th December 2009, 14:28
Guys, not so fast. Of course you can run 32-bit code on 64-bit OS but it is emulation mode. That means that some of your hardware or optimization tricks will stop to work. Also it is unwise not to use full 64 bit data types. I suggest to write down native 64 bit code or use preprocessor's #ifdef's to provide 32/64 compliant code base with ability to produce both 32 and 64 bit native versions.

Regards,
-- tanuki