08_rlCoachKin自主编译,调试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了08_rlCoachKin自主编译,调试相关的知识,希望对你有一定的参考价值。

为了知道参数的意思,以及为了从头建立一个项目,我从使用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,去掉即可:


以上是关于08_rlCoachKin自主编译,调试的主要内容,如果未能解决你的问题,请参考以下文章

09_rlCoachKin讲解

IntelliJ:求值lambda表达式在调试时引发编译错误

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

Java千百问_08JDK详解(002)_jdk工具集都有什么

C++ 解释器/控制台/片段编译器

方舟编译器带来更多话语权,国产编译器仍需提高自主性