• 4419阅读
  • 5回复

编译qte2.3.7程序时出错 [复制链接]

上一主题 下一主题
离线oyhuan
 

只看楼主 正序阅读 楼主  发表于: 2009-04-21
编译qte2.3.7程序时出错
交叉编译完qte2.3.7,写了个test程序,里面调用了ACE库
#include <qapplication.h>
#include <qpushbutton.h>
#include <ace/OS.h>
int main(int argc, char **argv)
{
        QApplication a(argc, argv);
        QPushButton hello("hello,world", 0);
        hello.resize(100, 30);
        char title[32];
        ACE_OS::sprintf(title,"你好");
        hello.setText(QString::fromUtf8(title));
        a.setMainWidget(&hello);
        hello.show();
        return a.exec();
}


运行make时出现以下错误
[root@localhost test]# make
arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/opt/qt/qte/include -I/opt/ace/ACE_wrappers -o test.o test.cpp
In file included from /opt/qt/qte/include/qwindowdefs.h:44,
                 from /opt/qt/qte/include/qwidget.h:42,
                 from /opt/qt/qte/include/qapplication.h:42,
                 from test.cpp:1:
/opt/qt/qte/include/qstring.h: In member function `uchar& QChar::cell()':
/opt/qt/qte/include/qstring.h:166: error: cannot bind packed field `((QChar*)this)->QChar::cl' to `uchar&'
/opt/qt/qte/include/qstring.h: In member function `uchar& QChar::row()':
/opt/qt/qte/include/qstring.h:167: error: cannot bind packed field `((QChar*)this)->QChar::rw' to `uchar&'
make: *** [test.o] Error 1
[root@localhost test]#


Makefile文件:
[root@localhost test]# cat Makefile
#############################################################################
# Makefile for building test
# Generated by tmake at 20:02, 2009/04/21
#     Project: test
#    Template: app
#############################################################################

####### Compiler, tools and options

CC    =    arm-linux-gcc
CXX    =    arm-linux-g++
CFLAGS    =    -pipe -Wall -W -O2 -DNO_DEBUG
CXXFLAGS=    -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG
INCPATH    =    -I$(QTDIR)/include -I/opt/ace/ACE_wrappers
LINK    =    arm-linux-gcc
LFLAGS    =    
LIBS    =    $(SUBLIBS) -L$(QTDIR)/lib -L/opt/ace/ACE_wrappers/lib -lm -lqte -lACE
MOC    =    $(QTDIR)/bin/moc
UIC    =    $(QTDIR)/bin/uic

TAR    =    tar -cf
GZIP    =    gzip -9f

####### Files

HEADERS =    
SOURCES =    test.cpp
OBJECTS =    test.o
INTERFACES =    
UICDECLS =    
UICIMPLS =    
SRCMOC    =    
OBJMOC    =    
DIST    =    
TARGET    =    test
INTERFACE_DECL_PATH = .

####### Implicit rules

.SUFFIXES: .cpp .cxx .cc .C .c

.cpp.o:
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cxx.o:
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cc.o:
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.C.o:
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.c.o:
    $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<

####### Build rules


all: $(TARGET)

$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC)
    $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)

moc: $(SRCMOC)

tmake: Makefile

Makefile: test.pro
    tmake test.pro -o Makefile

dist:
    $(TAR) test.tar test.pro $(SOURCES) $(HEADERS) $(INTERFACES) $(DIST)
    $(GZIP) test.tar

clean:
    -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS) $(TARGET)
    -rm -f *~ core

####### Sub-libraries


###### Combined headers


####### Compile

test.o: test.cpp
[ 此帖被oyhuan在2009-04-22 08:49重新编辑 ]
离线wwwindd
只看该作者 5楼 发表于: 2009-04-28
你查看下qt-embedded下/mkspecs/linux-g++/qmake.conf 里面的交叉编译链是不是添加进去
还有一个qmake-cache 忘了在哪 里面也是要修改下交叉编译链的
我今天也碰到这样问题,糊里糊涂就搞的解决了,暂时只能知道大概是qmake这里的问题.
离线oyhuan

只看该作者 4楼 发表于: 2009-04-23
解决了,是因为编译环境不同,不兼容
离线oyhuan

只看该作者 3楼 发表于: 2009-04-22
我可能知道原因了,
ACE是用3。4。1交叉编译器,QTE用2.95.3交叉编译器。是不是这个原因有冲突?
现在又有一个问题ACE不能用2.95.3编译,QTE不能用3.4.1交叉编译。
大家,帮下忙吧。。
我想用3.4.1交叉编译QTE,要改哪些源代码吗?
离线oyhuan

只看该作者 2楼 发表于: 2009-04-22
引用第1楼yangchun1984于2009-04-22 08:12发表的  :
你的test程序用到了信号与槽嘛?如果用到了,似乎还要moc一下!

谢谢你,里面调用了ACE库,是没加ACE库的原因。
刚才的错误也经没有了,现在又出现新的错误。我修改了一下内容,能帮我看看吗?
离线yangchun1984
只看该作者 1楼 发表于: 2009-04-22
你的test程序用到了信号与槽嘛?如果用到了,似乎还要moc一下!
快速回复
限100 字节
 
上一个 下一个