Search code examples
c++qtwindows-2000

Can I deploy for Windows 2000 using Qt 4.8.4?


I have created an application using Qt 4.8.4, and now I have to distribute it on Windows 2000 machines, among the others. I have already tried searching over the Internet for a clear explanation about it, but I can't find a confirmation on what's the older Windows version actually supported by Qt.

The application runs fine on Windows XP (both 32 and 64 bit) and Windows 7 but, when I try to launch it on Windows 2000 I receive the well-known error "[Application name].exe is not a valid win32 application.", and I guess that the error relies on the unsupported Windows version.

The application is a "simple" one, it just need QtCore4.dll and QtGui4.dll as dependencies.

If it can help, I am developing on a Windows 7 64 bit machine, using Qt 4.8.4 and Qt Creator 2.7.1. If I go under Tools->Options->Build&Run->Kits->Manual->Desktop, I have "Microsoft Visual C++ Compiler 10.0 (x86)" as the compiler in use. Do I have to select a different one, maybe?

Thanks for any answer.


EDIT: What I've done after reading @vahancho's answer:

  • "Move" the project from Qt Creator to Visual Studio 2010, using CMake;
  • Install Visual Studio Express 2008 (enabling the V90 Platform Toolset, this way)
  • Open the project from VS2010, and go under Project Properties->Configuration Properties->General and change Platform Toolset to V90;
  • Recompile the project;

Now, I've tried to run the application compiled this way on a virtual machine, mounting Windows 2000, but I get another error, this time: "The procedure entry point DecodePointer could not be located in the dynamic link library KERNEL32.dll".


Solution

  • OK, some time has passed, but I'd like to give a definitive answer to this question of mine. Unfortunately, what I was asking for it's not possible. @vahancho's answer is right, and the solution he pointed out is correct for the majority of situations. However, DecodePointer is "included" in Windows XP SP 2 kernel, and it's not possible to compile an application using it for an older Microsoft OS, even by choosing the VC++2008 compiler.

    An additional reference is given by this post on CodeProject. Fortunately for me, my application was simple enough to let me rewrite it using the good old VB6 :)