Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

How to compile kiax on windows

okk12345
2008-11-04
2013-04-25
  • okk12345
    okk12345
    2008-11-04

    hello,  i am poor in english and linux.
    The MinGW+MSYS+QT4 is ok,but i don't know howto compile kiax with  them. what things i should ?  steps?

    please help, thank you !

     
    • Emo
      Emo
      2008-11-04

      Hi,

      Yes, windows compilation is a bit of a hell. Let's try to summarize it.

      Are you able to compile Qt examples? If yes, this means you have a good mingw32-make setup. Then proceed this way:

      Download windows support libraries from sourceforge:

      http://downloads.sourceforge.net/kiax/kiax-2.0-binaries-win32.zip

      Or, alternatively, instead of using the binary libs which are compiled using MinGW (GCC 3.4.5).  You can download all of those libraries as source and compile them - all of them are open source. I have provided the binary libs just to make the exercise easier. Remember you will have to have the same GCC version (3.4 at least) if you decide to compile.

      Required libraries are SQlite, Portaudio v19, iaxclient and json-c.

      Put the binary files into directory "kiax2core/libs-windows" under the source root.

      Supposing you are in the source root, change directory to "kiax2core", create Makefile (using qmake) and run mingw32-make:

      cd ./kiax2core
      qmake
      mingw32-make

      This will build  kiax2core.dll into the "release" directory.

      Then, copy all binary files to the release directory in ./gui:

      cp ./libs-windows/* ../gui/release
      cp ./release/kiax2core.dll ../gui/release

      Also, copy Qt libraries (please check where you have installed Qt and look under ./lib dir)

      cp QTINSTALLDIR/lib/QtCore4.dll ../gui/release/
      cp QTINSTALLDIR/lib/QtGui4.dll ../gui/release/
      cp QTINSTALLDIR/lib/QtNetwork4.dll ../gui/release/

      Copy MinGW support file:

      cp MINGWINSTALLDIR/bin/mingwm10.dll ../gui/release/

      You will need also to install OpenSSL (you can download it as binary).
      Download OpenSSL and copy from its binary install directory OpenSSL libraries:

      ssleay32.dll
      libssl32.dll
      libeay32.dll

      and copy them to gui/release

      Now that you have all binaries in place, please make a backup :) and have them prepared when you need to repeat this.

      then change directory to gui, create Makefile and run mingw32-make:

      cd ../gui
      qmake
      mingw32-make

      Now, you should have all needed in the "release" directory. Change to "release" and run the gui.exe file (which you can rename).

      cd release
      ./gui

      I hope this helps..

      Cheers,
      Emil

       
    • okk12345
      okk12345
      2008-11-04

      thank you !
      when i complie kiax2core ,there no kiax2core release,only debug/libkiax2core.a

      /d/kiax/trunk/kiax2core
      $ make
      make -f Makefile.Debug
      make[1]: Entering directory `/d/kiax/trunk/kiax2core'
      g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -shared -Wl,--out-implib,debug/libkiax2core.a -o debug/kiax2core.dll object_script.kiax2core.Debug  -L'd:/Qt/4.4.3/lib' ./libs-windows/iaxclient.dll ./libs-windows/sqlite3.dll -lQtGuid4 -lQtCored4
      Creating library file: debug/libkiax2core.a
      make[1]: Leaving directory `/d/kiax/trunk/kiax2core'

      why ?

      help,thank you !

       
      • Emo
        Emo
        2008-11-05

        OK, maybe your default Qt installation is different. Please add to your kiax2core.pro project

        CONFIG -= staticlib
        CONFIG += dll

        And re-run qmake and then mingw32-make
        This should force qmake to generate Makefile which will link the lib as DLL and not as static lib.

         
    • okk12345
      okk12345
      2008-11-04

      /d/kiax/trunk/kiax2core
      $ make
      make -f Makefile.Debug
      make[1]: Entering directory `/d/kiax/trunk/kiax2core'
      g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -shared -Wl,--out-implib,debug/libkiax2core.a -o debug/kiax2core.dll object_script.kiax2core.Debug  -L'd:/Qt/4.4.3/lib' ./libs-windows/iaxclient.dll ./libs-windows/sqlite3.dll -lQtGuid4 -lQtCored4
      Creating library file: debug/libkiax2core.a
      make[1]: Leaving directory `/d/kiax/trunk/kiax2core'

      kiax2core is also been released in the debug file?

       
      • Emo
        Emo
        2008-11-05

        Looks like qmake is set up to build in debug mode. To change to release mode change in the .pro files:

        CONFIG += release

        I hope it helps.

        Cheers,
        Emil

         
    • okk12345
      okk12345
      2008-11-04

      $ make
      make -f Makefile.Debug
      make[1]: Entering directory `/d/kiax/trunk/gui'
      D:\Qt\4.4.3\bin/moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DWIN32DEP -DQT_DLL -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'../../../Qt/4.4.3/include/QtCore' -I'../../../Qt/4.4.3/include/QtCore' -I'../../../Qt/4.4.3/include/QtNetwork' -I'../../../Qt/4.4.3/include/QtNetwork' -I'../../../Qt/4.4.3/include/QtGui' -I'../../../Qt/4.4.3/include/QtGui' -I'../../../Qt/4.4.3/include' -I'../kiax2core' -I'../kiax2core/includes' -I'../kiax2core/includes/json' -I'd:/Qt/4.4.3/include/ActiveQt' -I'debug' -I'.' -I'../../../Qt/4.4.3/mkspecs/win32-g++' -D__GNUC__ -DWIN32 Kiax2MainWindow.h -o debug/moc_Kiax2MainWindow.cpp
      make[1]: D:Qt4.4.3bin/moc.exe: Command not found
      make[1]: *** [debug/moc_Kiax2MainWindow.cpp] Error 127
      make[1]: Leaving directory `/d/kiax/trunk/gui'
      make: *** [debug] Error 2

      moc.exe: Command not found? why?

      QTDIR and path i set  correct correctly.

       
      • Emo
        Emo
        2008-11-05

        I guess this happens because you are using make and not mingw32-make. There are some weird behaviors of MinGW when it comes to make and PATH. I had the same problem and I had to cut all entries in the PATH leading to MinGW and then I had to use only mingw32-make.

        Please test if you can compile Qt examples.

         
    • okk12345
      okk12345
      2008-11-05

      thank you  very  much !

      when i compile gui, trobule comes.

      $ mingw32-make
      D:/MinGW/bin/mingw32-make.exe -f Makefile.Debug
      mingw32-make.exe[1]: Entering directory `d:/kiax/trunk/gui'
      g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DWIN32DEP -DQT_DLL -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'../../../Qt2/4.4.3/include/QtCore' -I'../../../Qt2/4.4.3/include/QtCore' -I'../../../Qt2/4.4.3/include/QtNetwork' -I'../../../Qt2/4.4.3/include/QtNetwork' -I'../../../Qt2/4.4.3/include/QtGui' -I'../../../Qt2/4.4.3/include/QtGui' -I'../../../Qt2/4.4.3/include' -I'../kiax2core' -I'../kiax2core/includes' -I'../kiax2core/includes/json' -I'd:/Qt2/4.4.3/include/ActiveQt' -I'debug' -I'.' -I'../../../Qt2/4.4.3/mkspecs/default' -o debug/Kiax2JSONBalance.o Kiax2JSONBalance.cpp
      Kiax2JSONBalance.cpp: In member function `void Kiax2JSONBalance::sslHandle(const QList<QSslError>&)':
      Kiax2JSONBalance.cpp:47: error: 'class QHttp' has no member named 'ignoreSslErrors'
      mingw32-make.exe[1]: *** [debug/Kiax2JSONBalance.o] Error 1
      mingw32-make.exe[1]: Leaving directory `d:/kiax/trunk/gui'
      D:\MinGW\bin\mingw32-make.exe: *** [debug] Error 2

      ssleay32.dll libssl32.dll libeay32.dll  I copy them to gui/release. The openssl must been installed?

      json-c  i  did not find, does it in ..\kiax2core\includes\json, is  a json.h ? or .dll

      what is Portaudio v19,  is libportaudio-2.dll?

      another ,when i modify the "face"of kiax,when i compile it, does qt4.43 support  ? or only qt3 suppourt .

      please help,
      thank you  very much  !

       
    • okk12345
      okk12345
      2008-11-05

      ok,kiax is running,thanks your help!

       
      • Emo
        Emo
        2008-11-05

        you are welcome ;)

        Cheers,
        Emil

         
    • okk12345
      okk12345
      2008-11-14

      I hav e question? when i  compile Qt4.4.3 with MinGW,the result is ok. But when i compile kiax  with Qt4.4.3compiled, there is a error. He told me that there is no member "ignoreSslErrors" in
      "Qhttp" . (configure -static -release -no-exceptions. )

      ignoreSslErrors  ?

      There is  another  question , when i compile qt4.4.3 with Mingw ,

      D:/Qt/4.4.3>
      configure -debug-and-release -plugin-sql-sqlite -plugin-sql-sqlite -qt-libpng -qt-libjpeg-openssl

      errors come. Told me that There  didn't  detect  sqlite3 lib and

      a lot of openssl errors, that's why ? please help me ,because i want to run kiax without Qt installed.

      thank you very much !

       
      • Emo
        Emo
        2008-11-14

        Hi,

        For the first question:

        Depending on whether you have OpenSSL properly configured at compile time QHttp includes (or doesn't include respectively) the slot ignoreSslErrors (#ifdef decides that in compile-time). In your case when you compiled Qt you had OpenSSL and the build system took that in mind. The pre-built distributed Qt seems to not have included it by default.

        Your second question:

        I guess you don't need the sqlite plugin to build Qt. Kiax uses sqlite, but this has to be configured in the .pro file (the qt built-in support for sqlite is not used). Eventually, if you insist on having sqlite plugin built-in I guess you need to specify where the source and the header files of sqlite are located. I haven't personally done that yet.

        Regards,
        Emil

         
    • okk12345
      okk12345
      2008-11-14

      Wether i need configure "-openssl" when compile Qt,does kiax need which compiled with ?
      such as" configure -debug-and-release -static -openssl ". 

      i think kiax use openssl from outside ,not use Qt's . so i use "
      configure -debug-and-release -static " to compile Qt.

      thank you !