为了知道参数的意思,以及为了从头建立一个项目,我从使用QTCreator来单独建立项目(当然也可以直接使用源代码中建立好的VS项目)。
其实也推荐
VS2010调试
如果是用自带的VS项目,那么我们需要把依赖的动态库添加到PATH或者把dll拷贝到运行目录:
E:\01_workspace\05_RL\rl-0.6.2\build\demos\rlCoachKin\Debug
我们自己编译了之后,调试运行时,打开RL库的源文件,打断点也是可以进入调试的。这样方便我们开发调式。
不管是QT还是VS也都适用。
QT项目:
QT项目建立好之后多半启动会assert:那是因为eigen的问题,需要添加一个宏即可。
QT项目如下(可以修复这个assert):
TEMPLATE=app
CONFIG+=console
CONFIG-=app_bundle
QT+=opengl
QT+=network #如果链接报错:
#LNK2038:检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不匹配值“2”(ConfigurationDelegate.obj中)
#则是因为:Debug使用了Release的库文件。 INCLIUDE_ROOT=$$quote(E:/ProgramFiles(x86)/rl-0.6.2/include)
LIB_ROOT=$$quote(E:/ProgramFiles(x86)/rl-0.6.2/lib)
PRJ_ROOT=../
DESTDIR=$$PRJ_ROOT/bin/ CONFIG(debug,debug|release){
LIBS+=-L$$LIB_ROOT/-lrlkind-lrlsgd-lrlxmld-lcoin3d-lsoqt1d-llibxml2
}else{
LIBS+=-L$$LIB_ROOT/-lrlkin-lrlsg-lrlxml-lcoin3-llibxml2
} #DEFINES+=COIN_NOT_DLL
#DEFINES+=SOQT_NOT_DLL DEFINES+=COIN_DLL
DEFINES+=SOQT_DLL
DEFINES+=M_PI=3.14159265358979323846 #解决Eigenabort的问题
#参考:http://eigen.tuxfamily.org/dox-devel/TopicUnalignedArrayAssert.html
DEFINES+=EIGEN_DONT_ALIGN_STATICALLY INCLUDEPATH+=$$INCLIUDE_ROOT
INCLUDEPATH+=$$INCLIUDE_ROOT/boost-1_52 SOURCES+=$$PRJ_ROOT/ConfigurationDelegate.cpp
HEADERS+=$$PRJ_ROOT/ConfigurationDelegate.h
SOURCES+=$$PRJ_ROOT/ConfigurationModel.cpp
HEADERS+=$$PRJ_ROOT/ConfigurationModel.h
SOURCES+=$$PRJ_ROOT/MainWindow.cpp
HEADERS+=$$PRJ_ROOT/MainWindow.h
SOURCES+=$$PRJ_ROOT/OperationalDelegate.cpp
HEADERS+=$$PRJ_ROOT/OperationalDelegate.h
SOURCES+=$$PRJ_ROOT/OperationalModel.cpp
HEADERS+=$$PRJ_ROOT/OperationalModel.h
SOURCES+=$$PRJ_ROOT/rlCoachKin.cpp
SOURCES+=$$PRJ_ROOT/Server.cpp
HEADERS+=$$PRJ_ROOT/Server.h
SOURCES+=$$PRJ_ROOT/Socket.cpp
HEADERS+=$$PRJ_ROOT/Socket.h
但是运行会abort,居然是构造出问题了。其实是Eigen内部优化的abort,去掉即可: