g ++ Qt链接问题

时间:2014-07-10 11:16:05

标签: c++ qt g++

我在使用g ++ 4.5.3编译C ++项目时遇到麻烦(动态)链接Qt库:

g++ -Wall XMLInOut.cpp tinyxml2.cpp -I"C:\Qt\4.7.1\include" -I"$ADTF_ADDONS\adtf-device-toolbox\include" -L"C:\Qt\4.7.1\lib" -lQtCore4 -DtUInt32=uint -o xmltest.exe

输出如下:

/tmp/cclJqe9S.o:XMLInOut.cpp:(.text+0x1db): undefined reference to `QString::toUInt(bool*, int) const'
/tmp/cclJqe9S.o:XMLInOut.cpp:(.text$_ZN7QStringC1EPKc[QString::QString(char const*)]+0x15): undefined reference to QString::fromAscii_helper(char const*, int)
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: /tmp/cclJqe9S.o: bad reloc address 0x15 in section `.text$_ZN7QStringC1EPKc[QString::QString(char const*)]'

如果我理解正确,-l选项将链接到动态库。在Qt / libs中我有QtCore4.dll

我做错了什么?

干杯

编辑

虽然我认为问题完全在于链接,但我会发布我的代码:

#include "XMLInOut.h"
#include "tinyxml2.h"

#include <iostream>
#include "ModelToInterfaceWrapper.h"

//#define __DEBUG_OUT_
    #ifdef __DEBUG_OUT_
#define out(A) cout<<A
#else
    #define out(A)
#endif
using namespace std;
using namespace tinyxml2;



void XMLInOut::readAndParseFile(const char* pFilename){



     XMLDocument doc;
     doc.LoadFile( "config.xml" );
     XMLElement *service   = doc.FirstChildElement( "root" )->FirstChildElement( "Service" );



        for( service; service; service=service->NextSiblingElement()  )
        {// Iterating Services

             out(endl<<service->FirstAttribute()->Value());

             QString serviceName;
             tUInt32 signalValue ;

             const XMLAttribute* description = ((const XMLElement *)service)->FindAttribute("description");

            if((const XMLAttribute*)0 != description){
                out(" ("<<description->Value()<<")");
                serviceName = description->Value();
            }else {
                serviceName = service->FirstAttribute()->Value();
            }



            for(XMLElement *signal = service->FirstChildElement( "Signal" ); signal; signal=signal->NextSiblingElement()  ){
                out(endl<<"  "<<signal->GetText());
                signalValue = (new QString (signal->GetText()))->toUInt();
            }

        }


}


int main(int argc, char **argv) {
    XMLInOut xmlinOut;

    xmlinOut.readAndParseFile("config.xml");

}

0 个答案:

没有答案