Archived

This forum has been archived. Please start a new discussion on GitHub.

Ice & Qt Opensource on Windows

Hi All,

I am trying to compile a project written in Qt4.1 using the open source windows version. The project also uses Ice obviously :)

The problem is with MinGW (which Qt4.1 uses). When I try to link my project with the MSVC7.1 Ice libraries I get about 10 A4 pages worth of "undefined reference" errors. The same is true if I try to link against the VC6.0 package.

I assume this is a compability problem with using MinGW compiler and linking to a MCVS7.1 library? However, my project also links with the "python" library which itself is compiled with a MSVC compiler (7.1 I think) so why is Ice incompatible?

Oh, I also get the annoying "Only multi-threaded dll's can be built with Ice" message. To get around this I just comment out the relevant code in the config.h file.

Comments

  • marc
    marc Florida
    Oh, I also get the annoying "Only multi-threaded dll's can be built with Ice" message. To get around this I just comment out the relevant code in the config.h file.

    This warning is there for a reason--don't comment it out! You must use multi-threaded DLLs with Ice, otherwise your application won't work.

    What undefined references do you get? Without seeing the actual link errors, it's hard to tell what's going wrong.
  • marc
    marc Florida
    I just looked up MinGW, this seems to be a GCC version for Windows, right? Does this version of GCC have a C++ binary format that is compatible with Visual C++ 6.0 or 7.1? If not, then you cannot use MinGW together with Visual C++ libraries. Instead, you would have to try to compile Ice using MinGW from the sources. Unfortunately, we cannot be of any assistance with this, as we do not support GCC on Windows.
    I assume this is a compability problem with using MinGW compiler and linking to a MCVS7.1 library? However, my project also links with the "python" library which itself is compiled with a MSVC compiler (7.1 I think) so why is Ice incompatible?

    Ice is a C++ application, while Python is written in C only. The C binary APIs of different compilers are usually compatible, but the C++ binary APIs are usually not.
  • marc wrote:
    This warning is there for a reason--don't comment it out! You must use multi-threaded DLLs with Ice, otherwise your application won't work.

    My project does use multi-threaded libraries - it just doesn't define _DLL or _MT!
    marc wrote:
    Ice is a C++ application, while Python is written in C only. The C binary APIs of different compilers are usually compatible, but the C++ binary APIs are usually not.

    Thank you for clearing that up - I was confused why Python would link but Ice wouln't - now I know. I forgot Python was C only - silly me! :o

    So I need to compile Ice using MinGW - how hard can it be ??? ;)