DeepMimicCore compilation under DeepMimic learning under win10


Still follow the steps on the github home page [1], and refer to [2], the steps seem relatively simple, but there are still many problems in the process

Compile

  • Choose the x64 option
  • Add header files and link configuration
  • Select Release_Swig to compile

Eventually, a DeepMimicCore.py file will be generated

problem solved

1. The Windows SDK is missing

  • details
	C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 找不到 Windows SDK 版本10.0.17134.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
  • solve

Go to the official website to download the corresponding SDK installation

2.swig.exe not found

  • details
	1>------ 已启动生成: 项目: DeepMimicCore, 配置: Release_Swig x64 ------
	1>Performing Custom Build Tools
	1>PYTHON_INCLUDE:
	1>PYTHON_LIB:
	1>SWIG_DIR:
	1>'\swig.exe' 不是内部或外部命令,也不是可运行的程序
	1>或批处理文件。
	1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(209,5): error MSB6006: “cmd.exe”已退出,代码为 9009。
	1>已完成生成项目“DeepMimicCore.vcxproj”的操作 - 失败。
  • solve

Add SWIG_DIR under the environment variable, the path after decompressing the compressed package, which contains swig.exe

3. Eigen error

  • details
	1>f:\study\engine\animation\deepmimic\deepmimic\deepmimiccore\util\mathutil.h(5): fatal error C1083: 无法打开包括文件: “Eigen/Dense”: No such file or directory
	1>KinCharacter.cpp
	1>f:\study\engine\animation\deepmimic\deepmimic\deepmimiccore\util\mathutil.h(5): fatal error C1083: 无法打开包括文件: “Eigen/Dense”: No such file or directory
	1>KinTree.cpp
	1>f:\study\engine\animation\deepmimic\deepmimic\deepmimiccore\util\mathutil.h(5): fatal error C1083: 无法打开包括文件: “Eigen/Dense”: No such file or directory
	1>Motion.cpp
	1>f:\study\engine\animation\deepmimic\deepmimic\deepmimiccore\util\mathutil.h(5): fatal error C1083: 无法打开包括文件: “Eigen/Dense”: No such file or directory
	1>Shape.cpp
  • solve

Because I am running the Install project, I will copy a copy to the C drive, the path is C: \ Program Files (x86) \ Eigen3 \ include \ eigen3. But the tutorial is about adding to include in the header file, adding the previous path is ok

4.glew header file not found

  • details
	1>f:\study\engine\animation\deepmimic\deepmimic\deepmimiccore\render\drawmesh.h(17): fatal error C1083: 无法打开包括文件: “GL/glew.h”: No such file or directory
	1>KinCharacter.cpp
	1>f:\study\engine\animation\deepmimic\deepmimic\deepmimiccore\render\drawmesh.h(17): fatal error C1083: 无法打开包括文件: “GL/glew.h”: No such file or directory
  • solve

Contains glew header files

5. M_PI was not found

  • details
	1>f:\study\engine\animation\deepmimic\deepmimic\deepmimiccore\render\renderstate.h(87): warning C4312: “类型强制转换”: 从“unsigned int”转换到更大的“GLvoid *”
	1>f:\study\engine\animation\deepmimic\deepmimic\deepmimiccore\render\camera.cpp(328): error C2065: “M_PI”: 未声明的标识符
	1>f:\study\engine\animation\deepmimic\deepmimic\deepmimiccore\render\camera.cpp(329): error C2065: “M_PI”: 未声明的标识符
  • Solution: add a macro _USE_MATH_DEFINES

reference:

6. glew32.lib cannot be found

  • details
	1>LINK : fatal error LNK1181: 无法打开输入文件“glew32.lib”
  • solve

Include lib path, to * .lib path, such as: F: \ study \ engine \ animation \ DeepMimic \ glew-2.1.0 \ lib \ Release \ x64

7. Can't find BulletDynamics.lib

  • details
	1>LINK : fatal error LNK1181: 无法打开输入文件“BulletDynamics.lib”
  • Solve
    (1) Change the configuration, the default is shown in the following figure, and remove the _vs2010_x64_release.
    glew_outpu_config
    (2) Refer to [4] to change the required static library.
Construction name Remarks
BulletCollision
BulletDynamics
BulletSoftBody
LinearMath

8. Link error, symbol not found

  • details
	1>  正在创建库 F:\study\engine\animation\DeepMimic\DeepMimic\DeepMimicCore\x64\Release_Swig\_DeepMimicCore.lib 和对象 F:\study\engine\animation\DeepMimic\DeepMimic\DeepMimicCore\x64\Release_Swig\_DeepMimicCore.exp
	1>Camera.obj : error LNK2001: 无法解析的外部符号 __imp_glutGetModifiers
	1>DrawUtil.obj : error LNK2001: 无法解析的外部符号 __imp___glutCreateWindowWithExit
	1>DrawUtil.obj : error LNK2001: 无法解析的外部符号 __imp___glutInitWithExit
	1>DrawUtil.obj : error LNK2001: 无法解析的外部符号 __imp_glutInitDisplayMode
	1>DrawUtil.obj : error LNK2001: 无法解析的外部符号 __imp_glutGet
	1>DrawUtil.obj : error LNK2001: 无法解析的外部符号 __imp_glutInitWindowSize
	1>GroundPlane.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl btStaticPlaneShape::btStaticPlaneShape(class btVector3 const &,float)" (??0btStaticPlaneShape@@QEAA@AEBVbtVector3@@M@Z)
	1>MultiBody.obj : error LNK2001: 无法解析的外部符号 "public: float const * __cdecl btMultiBody::getJointVelMultiDof(int)const " (?getJointVelMultiDof@btMultiBody@@QEBAPEBMH@Z)
	1>MultiBody.obj : error LNK2001: 无法解析的外部符号 "public: void __cdecl btMultiBody::setupPlanar(int,float,class btVector3 const &,int,class btQuaternion const &,class btVector3 const &,class btVector3 const &,bool)" (?setupPlanar@btMultiBody@@QEAAXHMAEBVbtVector3@@HAEBVbtQuaternion@@00_N@Z)
	1>MultiBody.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl btMultiBody::btMultiBody(int,float,class btVector3 const &,bool,bool,bool)" (??0btMultiBody@@QEAA@HMAEBVbtVector3@@_N11@Z)
	1>SimBodyJoint.obj : error LNK2001: 无法解析的外部符号 "public: void __cdecl btMultiBody::addJointTorqueMultiDof(int,float const *)" (?addJointTorqueMultiDof@btMultiBody@@QEAAXHPEBM@Z)
	1>SimBodyJoint.obj : error LNK2001: 无法解析的外部符号 "public: float * __cdecl btMultiBody::getJointPosMultiDof(int)" (?getJointPosMultiDof@btMultiBody@@QEAAPEAMH@Z)
	1>SimBodyJoint.obj : error LNK2001: 无法解析的外部符号 "public: float * __cdecl btMultiBody::getJointVelMultiDof(int)" (?getJointVelMultiDof@btMultiBody@@QEAAPEAMH@Z)
	1>SimCharacter.obj : error LNK2001: 无法解析的外部符号 "public: void __cdecl btMultiBody::setupSpherical(int,float,class btVector3 const &,int,class btQuaternion const &,class btVector3 const &,class btVector3 const &,bool)" (?setupSpherical@btMultiBody@@QEAAXHMAEBVbtVector3@@HAEBVbtQuaternion@@00_N@Z)
	1>SimCharacter.obj : error LNK2001: 无法解析的外部符号 "public: void __cdecl btMultiBody::setupRevolute(int,float,class btVector3 const &,int,class btQuaternion const &,class btVector3 const &,class btVector3 const &,class btVector3 const &,bool)" (?setupRevolute@btMultiBody@@QEAAXHMAEBVbtVector3@@HAEBVbtQuaternion@@000_N@Z)
	1>SimCharacter.obj : error LNK2001: 无法解析的外部符号 "public: void __cdecl btMultiBody::setupPrismatic(int,float,class btVector3 const &,int,class btQuaternion const &,class btVector3 const &,class btVector3 const &,class btVector3 const &,bool)" (?setupPrismatic@btMultiBody@@QEAAXHMAEBVbtVector3@@HAEBVbtQuaternion@@000_N@Z)
	1>SimCharacter.obj : error LNK2001: 无法解析的外部符号 "public: void __cdecl btMultiBody::setupFixed(int,float,class btVector3 const &,int,class btQuaternion const &,class btVector3 const &,class btVector3 const &,bool)" (?setupFixed@btMultiBody@@QEAAXHMAEBVbtVector3@@HAEBVbtQuaternion@@00_N@Z)
	1>SimCharacter.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl btMultiBodyJointLimitConstraint::btMultiBodyJointLimitConstraint(class btMultiBody *,int,float,float)" (??0btMultiBodyJointLimitConstraint@@QEAA@PEAVbtMultiBody@@HMM@Z)
	1>SimJoint.obj : error LNK2001: 无法解析的外部符号 "public: void __cdecl btAngularLimit::set(float,float,float,float,float)" (?set@btAngularLimit@@QEAAXMMMMM@Z)
	1>SimJoint.obj : error LNK2001: 无法解析的外部符号 "public: float __cdecl btHingeConstraint::getHingeAngle(void)" (?getHingeAngle@btHingeConstraint@@QEAAMXZ)
	1>SimRigidBody.obj : error LNK2001: 无法解析的外部符号 "public: void __cdecl btRigidBody::setDamping(float,float)" (?setDamping@btRigidBody@@QEAAXMM@Z)
	1>World.obj : error LNK2001: 无法解析的外部符号 "public: virtual float __cdecl btCollisionShape::getContactBreakingThreshold(float)const " (?getContactBreakingThreshold@btCollisionShape@@UEBAMM@Z)
	1>World.obj : error LNK2001: 无法解析的外部符号 "public: virtual float __cdecl btCollisionShape::getAngularMotionDisc(void)const " (?getAngularMotionDisc@btCollisionShape@@UEBAMXZ)
	1>World.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __cdecl btCollisionShape::getBoundingSphere(class btVector3 &,float &)const " (?getBoundingSphere@btCollisionShape@@UEBAXAEAVbtVector3@@AEAM@Z)
	1>World.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __cdecl btSphereShape::calculateLocalInertia(float,class btVector3 &)const " (?calculateLocalInertia@btSphereShape@@UEBAXMAEAVbtVector3@@@Z)
	1>World.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __cdecl btConvexShape::project(class btTransform const &,class btVector3 const &,float &,float &,class btVector3 &,class btVector3 &)const " (?project@btConvexShape@@UEBAXAEBVbtTransform@@AEBVbtVector3@@AEAM2AEAV3@3@Z)
	1>World.obj : error LNK2001: 无法解析的外部符号 "public: virtual float __cdecl btMultiBodyConstraintSolver::solveGroupCacheFriendlyFinish(class btCollisionObject * *,int,struct btContactSolverInfo const &)" (?solveGroupCacheFriendlyFinish@btMultiBodyConstraintSolver@@UEAAMPEAPEAVbtCollisionObject@@HAEBUbtContactSolverInfo@@@Z)
	1>World.obj : error LNK2001: 无法解析的外部符号 "public: virtual float __cdecl btMultiBodyConstraintSolver::solveGroup(class btCollisionObject * *,int,class btPersistentManifold * *,int,class btTypedConstraint * *,int,struct btContactSolverInfo const &,class btIDebugDraw *,class btDispatcher *)" (?solveGroup@btMultiBodyConstraintSolver@@UEAAMPEAPEAVbtCollisionObject@@HPEAPEAVbtPersistentManifold@@HPEAPEAVbtTypedConstraint@@HAEBUbtContactSolverInfo@@PEAVbtIDebugDraw@@PEAVbtDispatcher@@@Z)
	1>World.obj : error LNK2001: 无法解析的外部符号 "protected: virtual float __cdecl btMultiBodyConstraintSolver::solveSingleIteration(int,class btCollisionObject * *,int,class btPersistentManifold * *,int,class btTypedConstraint * *,int,struct btContactSolverInfo const &,class btIDebugDraw *)" (?solveSingleIteration@btMultiBodyConstraintSolver@@MEAAMHPEAPEAVbtCollisionObject@@HPEAPEAVbtPersistentManifold@@HPEAPEAVbtTypedConstraint@@HAEBUbtContactSolverInfo@@PEAVbtIDebugDraw@@@Z)
	1>World.obj : error LNK2001: 无法解析的外部符号 "protected: virtual float __cdecl btMultiBodyConstraintSolver::solveGroupCacheFriendlySetup(class btCollisionObject * *,int,class btPersistentManifold * *,int,class btTypedConstraint * *,int,struct btContactSolverInfo const &,class btIDebugDraw *)" (?solveGroupCacheFriendlySetup@btMultiBodyConstraintSolver@@MEAAMPEAPEAVbtCollisionObject@@HPEAPEAVbtPersistentManifold@@HPEAPEAVbtTypedConstraint@@HAEBUbtContactSolverInfo@@PEAVbtIDebugDraw@@@Z)
	1>World.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl btCapsuleShape::btCapsuleShape(float,float)" (??0btCapsuleShape@@QEAA@MM@Z)
	1>World.obj : error LNK2001: 无法解析的外部符号 "protected: virtual float __cdecl btSequentialImpulseConstraintSolver::solveGroupCacheFriendlyIterations(class btCollisionObject * *,int,class btPersistentManifold * *,int,class btTypedConstraint * *,int,struct btContactSolverInfo const &,class btIDebugDraw *)" (?solveGroupCacheFriendlyIterations@btSequentialImpulseConstraintSolver@@MEAAMPEAPEAVbtCollisionObject@@HPEAPEAVbtPersistentManifold@@HPEAPEAVbtTypedConstraint@@HAEBUbtContactSolverInfo@@PEAVbtIDebugDraw@@@Z)
	1>DeepMimicCore.obj : error LNK2001: 无法解析的外部符号 __imp_glutPostRedisplay
	1>F:\study\engine\animation\DeepMimic\DeepMimic\DeepMimicCore\_DeepMimicCore.pyd : fatal error LNK1120: 33 个无法解析的外部命令
  • Solved, refer to [6]

(1) The symbol of glut cannot be found because it is compiled in 32-bit format. Use cmake to generate an x64, and then compile it out.
(2) The symbol of bullet cannot be found because of double precision. Macro

So far, I have compiled DeepMimicCore, so pleased! ! !

reference

[1] DeepMimic github homepage

[2] Windows builds OpenGL freeglut environment from scratch

[3] VS2017 C ++ program reported "error C2065:" M_PI ": undeclared identifier"

[4] Compile and install Bullet 2.82 under windows (Bullet Physics development environment configuration)

[5]Build error on Windows 10 (error LNK2001: unresolved external symbol)

Published 41 original articles · praised 7 · 20,000+ views

Guess you like

Origin blog.csdn.net/pkxpp/article/details/102654576