===========================================20180417============================
编译程序过程中报找不到某个头文件中定义的#include <vector>,经查改文件为C++库的标准文件,且这个文件在同一台电脑另外的项目中是能够编译通过的,所以怀疑是pro文件写的有问题,检查了头文件的包含路径,发现和正常能够编译过的pro文件没有什么区别。但是用正常能编译项目的pro文件复制过来进行改写后问题项目也能够编译通过。
最后发现是问题项目中SOURCE+=标签放置的位置不对,放在中间了,把他放到最后就可以正常编译过了,比较奇怪?
=========================================20180517=======================
补充,当时这个问题造成的原因不是pro文件的问题,应该是在c中去调用c++的库和相应文件时候,编译器默认采用的是C编译器,所以出现标准头文件不能被找到的问题,c调用c++应该先对c++进行一次extern c的封装,封装后可以正常调用。
此处附上一个正常编译通过的pro文件项目实例:
exists(../common.pri) {
include(../common.pri)
} else {
unix {
linux-* {
DEFINES+=LINUX_PLAT
}
else {
DEFINES+=UNIX_PLAT
}
}
win32 {
DEFINES+=WINDOWS_PLAT
}
}
unix{
TARGET = XXX //项目名称
TEMPLATE = lib
DESTDIR = ../../bin/lib
CONFIG += debug \
warn_on \
qt \
thread \
exceptions \
stl \
dll
QMAKE_LIBDIR += ../../bin/lib \
$$(ORACLE_HOME)/lib
LIBS += -lclntsh \
-larch
INCLUDEPATH += $$(ORACLE_HOME)/rdbms/public \
$$(PRJHOME)/src/ics/src/common \
./datashow/
!linux-*{
LIBS += -lnsl \
-lsocket
}
}
win32{
TARGET = librtdb
TEMPLATE = vclib
DESTDIR = ../../bin/lib
CONFIG += debug \
warn_on \
qt \
thread \
exceptions \
stl \
dll
QMAKE_LIBDIR += ../../bin/lib
LIBS += -larch
INCLUDEPATH += ./datashow
}
HEADERS += xxx.h \
SOURCES += XXXX.cpp \
MOC_DIR = ../../prs700u_temp/moc/librtdb
UI_DIR = ../../prs700u_temp/ui/librtdb
OBJECTS_DIR = ../../prs700u_temp/obj/librtdb