Tuesday, October 13, 2009

Shipping Qt DLLs

If you're using Windows and you want to ship a Qt application then, unless you're statically linking, you'll need to ship some Qt DLL files. Be warned - there are two sets of these files installed with the Qt Creator SDK and only the ones found in the qt\bin folder will work. This set of DLLs have been built using the MinGW compiler, which is the one used by default when you build a project using Qt Creator. However, the set found in the bin folder (and Qt Creator itself) are built using MSVC and are essentially private to Qt Creator - shipping these instead will result in DLL Entry Point Not Found errors when you launch your application.

Now, this begs the question - why is Qt Creator built using MSVC? Isn't MinGW up to the task? Good question. The version of MinGW that ships with the Qt 4.5 SDK is quite an old release and the MSVC compiler generates much smaller files (and arguably generates better code.) I guess the Nokia team wanted to ensure that their flagship tools use the best compiler for each platform.

Whether the forthcoming MinGW update due to be shipped with Qt 4.6 later this year does a much better job or not remains to be seen. It will be interesting to see which compiler they decide to built their toolset with...

3 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. Try the qt-creator mailing list - the Qt developers monitor this and you're more likely to get an answer.

    http://lists.trolltech.com/mailman/listinfo/qt-creator

    ReplyDelete
  3. Hi,
    Just to request for more information on how to create dll. i have been using qt creator 1.2.1 for a week. and i have my project running. when i build it, i get exe; how can i get dll. Ismail

    ReplyDelete