Article Directory
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.
(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
[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)