Results 1 to 3 of 3

Thread: new problem with simple C++ static variables

  1. #1
    Join Date
    Aug 2008
    Posts
    38
    Thanks
    19
    Qt products
    Qt4
    Platforms
    Unix/X11

    Default new problem with simple C++ static variables

    I moved some stuff around in my TCP/IP program and now I get a duplicate defined
    message for static variables.

    The strange thing is that the compiler is calling the use of a static variable a definition. :confused:

    Qt Code:
    1. #ifndef TCPIP_SERVER_H_
    2. #define TCPIP_SERVER_H_
    3. #include "ui_tcpip.h"
    4. #include "inet.h"
    5. #include <iostream>
    6. #include <sstream>
    7. #include <exception>
    8. using namespace std;
    9. #include "thread.cpp"
    10. #include "sock_io.cpp"
    11. #include "tstash.h"
    12. #include <QtDebug>
    13.  
    14. typedef void* (*p_VOID_FUNCT)(void*);
    15. class tcpip_server {
    16.  
    17. socklen_t clilen;
    18. struct sockaddr_in cli_addr, serv_addr;
    19. ushort port;
    20. // struct sock_addr_in accept_ip_struct;
    21. int accept_ip_address;
    22. int client_ip_address;
    23. Ui::tcpipClass ui;
    24. public:
    25. tcpip_server(int accept_ip_addr,
    26. ushort port_port,
    27. p_VOID_FUNCT p_void_funct, Ui::tcpipClass uip);
    28. //:
    29. // accept_ip_address(accept_ip_addr),
    30. // port(port_port),
    31. // ui(uip);
    32. // destructor
    33. ~tcpip_server()
    34. {
    35. close(socketfd); /* close original socket */
    36. }
    37. static int socketfd, newsocketfd;
    38. static QList<QString> qlist;
    39. static bool running;
    40. static QStringList qstrList;
    41. static void localClose()
    42. {
    43. qDebug()<<"close detected";
    44. running = false;
    45. close(socketfd); // obviously this is NOT a definition
    46. close(newsocketfd);
    47. exit(0);
    48. }
    49. static void* str_echo(void* p_void);
    50. // struct sock_addr_in client_ip_struct;
    51.  
    52.  
    53. };
    54. bool tcpip_server::running = true;
    55. int tcpip_server::socketfd = 0;
    56. int tcpip_server::newsocketfd = 0;
    57. QStringList tcpip_server::qstrList = QStringList();
    58. QList<QString> tcpip_server::qlist = QList<QString>();
    59. #endif /*TCPIP_SERVER_H_*/
    To copy to clipboard, switch view to plain text mode 

    link errors for each static variable!

    make release
    make -f Makefile.Release
    make[1]: Entering directory `/home/landon4/workspace/tcpip'
    g++ -c -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -Irelease -I. -o release/tcpip_client.o tcpip_client.cpp
    g++ -c -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -Irelease -I. -o release/tcpip_server.o tcpip_server.cpp
    tcpip_client.h: In constructor ‘tcpip_client::tcpip_client(int, ushort, bool, Ui::tcpipClass)’:
    tcpip_client.h:14: warning: ‘tcpip_client::accept_ip_address’ will be initialized after
    tcpip_client.h:12: warning: ‘ushort tcpip_client::port’
    tcpip_client.cpp:17: warning: when initialized here
    tcpip_client.cpp: At global scope:
    tcpip_client.cpp:17: warning: unused parameter ‘ui’
    tcpip_client.cpp: In member function ‘int tcpip_client::tcp_write(char*, int)’:
    tcpip_client.cpp:64: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result
    g++ -c -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -Irelease -I. -o release/main.o main.cpp
    In file included from tcpip_server.h:11,
    from tcpip_server.cpp:2:
    sock_io.cpp: In member function ‘int sock_io::tcp_write(char*, int)’:
    sock_io.cpp:18: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result
    tcpip_server.h: In constructor ‘tcpip_server::tcpip_server(int, ushort, void* (*)(void*), Ui::tcpipClass)’:
    tcpip_server.h:21: warning: ‘tcpip_server::accept_ip_address’ will be initialized after
    tcpip_server.h:19: warning: ‘ushort tcpip_server::port’
    tcpip_server.cpp:4: warning: when initialized here
    tcpip_server.cpp:43: warning: suggest parentheses around assignment used as truth value
    g++ -c -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -Irelease -I. -o release/tcpip.o tcpip.cpp
    /usr/lib/qt4/bin/moc -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -Irelease -I. tcpip.h -o release/moc_tcpip.cpp
    In file included from tcpip_server.h:11,
    from tcpip.cpp:8:
    sock_io.cpp: In member function ‘int sock_io::tcp_write(char*, int)’:
    sock_io.cpp:18: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result
    g++ -c -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -Irelease -I. -o release/moc_tcpip.o release/moc_tcpip.cpp
    g++ -o tcpip release/tcpip_client.o release/tcpip_server.o release/main.o release/tcpip.o release/moc_tcpip.o -lQtGui -lQtCore -lpthread
    make[1]: Leaving directory `/home/landon4/workspace/tcpip'
    release/tcpip.o:/usr/include/QtCore/qlist.h:527: multiple definition of `tcpip_server::qstrList'
    release/tcpip_server.o:/usr/include/QtCore/qatomic_i386.h:90: first defined here
    release/tcpip.o:/usr/include/QtCore/qlist.h:559: multiple definition of `tcpip_server::qlist'
    release/tcpip_server.o:/usr/lib/gcc/i386-redhat-linux/4.3.0/../../../../include/c++/4.3.0/iostream:77: first defined here
    release/tcpip.o:/home/landon4/workspace/tcpip/tcpip.cpp:175: multiple definition of `tcpip_server::socketfd'
    release/tcpip_server.o:/home/landon4/workspace/tcpip/tcpip_server.cpp:90: first defined here
    release/tcpip.o:(.data+0x0): multiple definition of `tcpip_server::running'
    release/tcpip_server.o:(.data+0x0): first defined here
    release/tcpip.o:/home/landon4/workspace/tcpip/tcpip.cpp:175: multiple definition of `tcpip_server::newsocketfd'
    release/tcpip_server.o:/usr/include/QtCore/qatomic_i386.h:90: first defined here
    collect2: ld returned 1 exit status
    make[1]: *** [tcpip] Error 1
    make: *** [release] Error 2
    Last edited by jacek; 17th August 2008 at 02:36. Reason: changed [code] to [quote]

  2. #2
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    5,372
    Thanks
    28
    Thanked 976 Times in 912 Posts
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11 Windows

    Default Re: new problem with simple C++ static variables

    Quote Originally Posted by landonmkelsey View Post
    bool tcpip_server::running = true;
    int tcpip_server::socketfd = 0;
    int tcpip_server::newsocketfd = 0;
    QStringList tcpip_server::qstrList = QStringList();
    QList<QString> tcpip_server::qlist = QList<QString>();
    This should be in a .cpp file, not a header.

    Why are they static anyway?

  3. The following user says thank you to jacek for this useful post:

    landonmkelsey (18th August 2008)

  4. #3
    Join Date
    Aug 2008
    Posts
    38
    Thanks
    19
    Qt products
    Qt4
    Platforms
    Unix/X11

    Default

    Made some changes and am now getting fewer but equally mystifying compile errors! The call to close(int) didn't cause a problem in
    Qt Code:
    1. tcpip_server::str_echo(void* p_void)
    To copy to clipboard, switch view to plain text mode 
    but causes a problem in
    Qt Code:
    1. void tcpip::localClose()!
    To copy to clipboard, switch view to plain text mode 
    The difference is that class tcpip has the Q_OBJECT but class tcpip_server does not have the Q_OBJECT!

    The remaining question is simple: why?
    The compiler seems to regard close as a tcpip function!

    Qt Code:
    1. #include "tcpip.h"
    2. #include <iostream>
    3. #include <sstream>
    4. #include <exception>
    5.  
    6. #include "tcpip_server.h"
    7. #include "tcpip_client.h"
    8. #include "tstash.h"
    9. #include <QStringListModel>
    10. using namespace std;
    11. #include "thread.cpp"
    12. #include "sock_io.cpp"
    13. #include <QtDebug>
    14.  
    15. tcpip::tcpip(QWidget *parent)
    16. : QWidget(parent)
    17. {
    18. ui.setupUi(this);
    19. connect( ui.pushButtonStartTCPServer, SIGNAL(clicked()), this, SLOT(StartTCPServer()) );
    20. connect( ui.pushButtonStartTCPClient, SIGNAL(clicked()), this, SLOT(StartTCPClient()) );
    21. connect( ui.pushButtonClose, SIGNAL(clicked()), this, SLOT(localClose()) );
    22.  
    23. ui.listWidgetServer->addItem(QString("server constructor"));
    24.  
    25. }
    26. tcpip::~tcpip()
    27. {
    28. delete ptcpipThreadStart;
    29. }
    30. void tcpip::StartTCPServer()
    31. {
    32. ui.listWidgetServer->addItem(QString("server1 StartTCPServer"));
    33. qsl.append(QString("abcd1234"));
    34. QStringListModel *qStringListModel;
    35. qStringListModel = new QStringListModel;
    36. qStringListModel->setStringList(tcpip_server::qstrList);
    37.  
    38. ui.listViewServer->setModel(qStringListModel);
    39.  
    40. QApplication::processEvents();
    41. bool ok = true;
    42. QString qstr = ui.lineEditTCPIPServerPortServer->text();
    43. port = qstr.toInt(&ok);
    44. //qDebug()<<" server port "<<port;
    45. ui.lineEditServerStatus->setText("server started");
    46. QApplication::processEvents();
    47. tcpipThread* ptcpipThreadStart = new tcpipThread(ui, port);
    48. ptcpipThreadStart->start();
    49. }
    50.  
    51. void tcpip::StartTCPClient()
    52. {
    53. ui.listWidgetClient->addItem(QString("client StartTCPClient"));
    54. bool ok = true;
    55. QString qstr = ui.lineEditTCPIPServerPortClient->text();
    56.  
    57. ushort port = qstr.toInt(&ok);
    58. tcpip_client* p_client = new tcpip_client((int)19999,port,FALSE, ui);
    59.  
    60. str_client(p_client, ui); /* process the request */
    61. close();
    62. }
    63. #define MAXLINE 512
    64.  
    65. void* tcpip_server::str_echo(void* p_void)
    66. {
    67. sock_io* p_sio = (sock_io*)p_void;
    68. int n;
    69. char line[MAXLINE];
    70. const char* pline = line;
    71. bool exitNow = false;
    72.  
    73. do
    74. {
    75. n = p_sio->tcp_read(line);
    76. if(!n)
    77. {
    78. running = false;
    79. close(socketfd);
    80. close(newsocketfd);
    81. qDebug()<<"str_echo tried to close";
    82. exit(0);
    83. }
    84. line[n] = '\n';
    85. line[n+1] = 0;
    86. n++;
    87. QString qstr(pline);
    88. qstr = qstr.trimmed();
    89. qstrList.append(QString(pline));
    90. qDebug()<<"_____"<<qstr.size()<<"_________";
    91. qDebug()<<"_____"<<QString("close").size()<<"_________";
    92. if (qstr == QString("close"))
    93. {
    94. qDebug()<<"close detected";
    95. running = false;
    96. close(socketfd);
    97. close(newsocketfd);
    98. exitNow = true;
    99. break;
    100. }
    101. p_sio->tcp_write(line, n);
    102. } while(!exitNow);
    103. void* p_void_exit=0;
    104. delete p_sio;
    105. if (exitNow) exit(0);
    106. pthread_exit(p_void_exit);
    107. return p_void_exit;
    108. }
    109.  
    110. #define MAXLINE 512
    111.  
    112. void tcpip::str_client(tcpip_client* tcpip_x, Ui::tcpipClass ui)
    113. {
    114. int n;
    115. char sendline[MAXLINE], recvline[MAXLINE + 1];
    116. bool done=FALSE;
    117. while (!done)
    118. {
    119. cout<<"enter keyboard string"<<endl;
    120. cin.getline(sendline,256);
    121. n = strlen(sendline);
    122. if(n==0) break;
    123. sendline[n] = '\n'; /* newline terminate */
    124. sendline[n+1] = 0;/* newline terminate */
    125. n++;
    126. ui.listWidgetClient->addItem(QString("client constructorstr_client"));
    127. tcpip_x->tcp_write(sendline,n);
    128. cout<<"sendline:"<<sendline<<endl;
    129. n = tcpip_x->tcp_read(recvline);
    130. recvline[n] = '\n'; /* null terminate */
    131. recvline[n+1] = 0; /* null terminate */
    132. n++;
    133. cout<<"bytes received "<<n;
    134. cout<<"client received:echo = "<<recvline<<endl;
    135. }
    136. }
    137. void tcpip::currChanged(QWidget*){};
    138.  
    139. void tcpipThread::run()
    140. {
    141. tcpip_server* p_serv = new tcpip_server((int)19999,port,tcpip_server::str_echo, ui);
    142. qDebug()<<"should not happen before client calls in...back from CTOR";
    143. delete p_serv;
    144. }
    145.  
    146. void tcpip::localClose()
    147. {
    148. qDebug()<<"close detected";
    149. tcpip_server::running = false;
    150. close(tcpip_server::socketfd);
    151. close(tcpip_server::newsocketfd);
    152. exit(0);
    153. }
    To copy to clipboard, switch view to plain text mode 
    compile errors:
    make debug
    make -f Makefile.Debug
    make[1]: Entering directory `/home/landon4/workspace/tcpip'
    g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -Idebug -I. -o debug/tcpip.o tcpip.cpp
    make[1]: Leaving directory `/home/landon4/workspace/tcpip'
    tcpip.cpp: In member function ‘void tcpip::localClose()’:
    tcpip.cpp:187: error: no matching function for call to ‘tcpip::close(int&)’
    /usr/include/QtGui/qwidget.h:477: note: candidates are: bool QWidget::close()
    tcpip.cpp:188: error: no matching function for call to ‘tcpip::close(int&)’
    /usr/include/QtGui/qwidget.h:477: note: candidates are: bool QWidget::close()
    make[1]: *** [debug/tcpip.o] Error 1
    make: *** [debug] Error 2

    Qt Code:
    1. #include "tcpip_server.h"
    2. tcpip_server::tcpip_server(int accept_ip_addr, ushort port_port,
    3. p_VOID_FUNCT p_void_funct, Ui::tcpipClass uip):
    4. accept_ip_address(accept_ip_addr),
    5. port(port_port),
    6. ui(uip)
    7. {
    8. int setreuse=1;
    9. int istatus;
    10.  
    11. if ( (socketfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
    12. {
    13. qDebug()<<"socketfd = socket(AF_INET, SOCK_STREAM, 0)) < 0";
    14. return;
    15. }
    16. qDebug()<<"socketfd = socket(AF_INET, SOCK_STREAM, 0))"<<socketfd;
    17. int errorDup = dup2(socketfd,20);
    18. qDebug()<<"errorDup"<<errorDup;
    19. qDebug()<<"socketfd = socket(AF_INET, SOCK_STREAM, 0))"<<socketfd;
    20.  
    21. memset((char *) &serv_addr,0, sizeof(serv_addr));
    22. serv_addr.sin_family = AF_INET;
    23. serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    24. serv_addr.sin_port = htons(SERV_TCP_PORT);
    25.  
    26. if(istatus = setsockopt(socketfd, SOL_SOCKET, SO_REUSEADDR, (char *) &setreuse, sizeof(setreuse)))
    27. {
    28. qDebug()<<"setsockopt";
    29. return;
    30. }
    31.  
    32. if (bind(socketfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
    33. {
    34. qDebug()<<"bind";
    35. return;
    36. }
    37.  
    38. listen(socketfd, 5);
    39. tstash<sock_io> vector_psio;
    40. void* p_void = NULL;
    41. running = true;
    42. while(1)
    43. {
    44. QApplication::processEvents();
    45. clilen = sizeof(cli_addr);
    46. qDebug()<<"enter accept()";
    47. newsocketfd = accept(socketfd, (struct sockaddr *) &cli_addr, &clilen);
    48. qDebug()<<"newsocketfd"<<newsocketfd;
    49. qDebug()<<"exit accept()";
    50. if (newsocketfd < 0)
    51. {
    52. return;
    53. }
    54. sock_io* p_sio = new sock_io( newsocketfd);
    55. p_void = (void*)p_sio;
    56. tthread* p_thread = new tthread( p_void_funct, p_void);
    57. p_thread->run();
    58. }
    59. }
    To copy to clipboard, switch view to plain text mode 

    Just to break things loose, I made the following change:
    Qt Code:
    1. void tcpip::localClose()
    2. {
    3. qDebug()<<"close detected";
    4. tcpip_server::running = false;
    5. ::close(tcpip_server::socketfd); // changed
    6. ::close(tcpip_server::newsocketfd); // changed
    7. exit(0);
    8. }
    To copy to clipboard, switch view to plain text mode 

    Now I get new link errors from that "qatomic thing"
    make debug
    make -f Makefile.Debug
    make[1]: Entering directory `/home/landon4/workspace/tcpip'
    g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -Idebug -I. -o debug/tcpip.o tcpip.cpp
    /usr/lib/qt4/bin/moc -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -Idebug -I. tcpip.h -o debug/moc_tcpip.cpp
    g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -Idebug -I. -o debug/moc_tcpip.o debug/moc_tcpip.cpp
    g++ -o tcpip debug/tcpip_client.o debug/tcpip_server.o debug/main.o debug/tcpip.o debug/moc_tcpip.o -lQtGui -lQtCore -lpthread
    make[1]: Leaving directory `/home/landon4/workspace/tcpip'
    debug/tcpip.o: In function `__static_initialization_and_destruction_0':
    /usr/include/QtCore/qlist.h:364: multiple definition of `tcpip_server::qstrList'
    debug/tcpip_server.o:/home/landon4/workspace/tcpip/tcpip_server.cpp:90: first defined here
    debug/tcpip.o: In function `__static_initialization_and_destruction_0':
    /home/landon4/workspace/tcpip/tcpip.cpp:190: multiple definition of `tcpip_server::qlist'
    debug/tcpip_server.o:/home/landon4/workspace/tcpip/tcpip_server.cpp:90: first defined here
    debug/tcpip.o:/usr/include/QtCore/qatomic_i386.h:82: multiple definition of `tcpip_server::socketfd'
    debug/tcpip_server.o:/home/landon4/workspace/tcpip/tcpip_server.cpp:90: first defined here
    debug/tcpip.o.data+0x0): multiple definition of `tcpip_server::running'
    debug/tcpip_server.o.data+0x0): first defined here
    debug/tcpip.o:/usr/include/QtCore/qatomic_i386.h:120: multiple definition of `tcpip_server::newsocketfd'
    debug/tcpip_server.o:/home/landon4/workspace/tcpip/tcpip_server.cpp:90: first defined here
    collect2: ld returned 1 exit status
    make[1]: *** [tcpip] Error 1
    make: *** [debug] Error 2
    BINGO! I moved the static definitions as you suggested and got rid of the qatomic errors!

    No errors! Thanks! In many years of C++ programming I never noticed a need for defining static variables just ahead of the implementation code!

    Maybe it is the Q_OBJECT thing!

    Unfortunately, the following changes are necessary!
    Qt Code:
    1. void tcpip::localClose()
    2. {
    3. qDebug()<<"close detected";
    4. tcpip_server::running = false;
    5. ::close(tcpip_server::socketfd);
    6. ::close(tcpip_server::newsocketfd);
    7. exit(0);
    8. }
    To copy to clipboard, switch view to plain text mode 

    program is now working perfectly (for the desired current state)

    thanks!
    Last edited by wysota; 3rd December 2009 at 11:01.

Similar Threads

  1. Replies: 16
    Last Post: 23rd May 2008, 10:12
  2. problem with static building
    By mismael85 in forum Qt Programming
    Replies: 11
    Last Post: 28th March 2008, 20:43
  3. Problem emitting signal from a static function
    By Valheru in forum Qt Programming
    Replies: 21
    Last Post: 12th June 2007, 14:48
  4. problem after Qt 4.2.2 static build
    By npc in forum Newbie
    Replies: 2
    Last Post: 23rd February 2007, 12:28
  5. Problem with libmng on static link
    By jlbrd in forum Installation and Deployment
    Replies: 2
    Last Post: 10th May 2006, 22:38

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.