我正在练习 MuJoCo 模拟,基于 Pranav Bhounsule 的 YouTube 讲座。
本讲座中,模拟的代码是用C语言编写的,并提供了运行模拟的makefile(如下)。
COMMON=/O2 /MT /EHsc /arch:AVX /I../../include /Fe../../bin/
LIBS = ../../lib/glfw3dll.lib ../../lib/mujoco.lib
CC = cl
ROOT = project_name
all:
$(CC) $(COMMON) main.c $(LIBS) -o ../../bin/$(ROOT)
main.o:
$(CC) $(COMMON) -c main.c
clean:
rm *.o ../../bin/$(ROOT)
我一直在 Visual Studio 2022 中工作,到目前为止一切正常。
目前,我想使用GTK-3.0库添加GUI组件,并且我使用vcpkg安装了GTK-3.0。
我在 Visual Studio 2022 中练习了一些 GTK 的示例,效果很好。
现在,我正在尝试 在我的 MuJoCo 模拟代码中添加 GTK 库,以便我可以在 Visual Studio Code 中集成我的模拟项目(我听说使用 VSCode 更好,因为它是轻量级的、多功能的,.. .等等与 VS2022 等 IDE 相比)。
基本上,我的 MuJoCo 项目的构建如下。 在以下目录中,
C:/.../mujoco-2.2.1-windows-x86_64
|-- include
| |-- GLFW // include GLFW headers e.g. glfw3.h, ...
| |-- mujoco // include mujoco headers e.g. mujoco.h, ...
|-- lib // include libraries e.g. glfw3dll.lib, mujoco.lib
|-- myProject
| |-- project_name
| | |-- main.c // this is the main code for MuJoCo simulation
| | |-- makefile // makefile for complie as shown in above.
| | |-- run_win.bat // batch file for executing the simulation
此外,我使用 vcpkg 在以下目录中安装了 GTK 库。
C:/.../vcpkg/installed/x64-windows
|-- bin // include GTK-related .dll files
|-- ...
|-- include // include GTK-related header files
| |-- atk-1.0
| |-- cairo
| |-- gtk-3.0
| |-- gdk
| |-- gtk // gtk.h, ...
| |-- ...
|-- lib // include GTK-related .lib files
| |-- gdk-pixbuf-2.0
| |-- glib-2.0
| |-- ...
|-- ...
正如我上面提到的,我正在尝试在 VSCode 中包含我的 MuJoCo 项目的 GTK 库。 在main.c中,相关头文件包含如下。
#include <GLFW/glfw3.h>
#include <mujoco/mujoco.h>
#include <gtk-3.0/gdk/gtk.h>
但是,当我厌倦运行模拟时(即使不包括 GTK 库),终端中出现错误;
gcc -c -g main.c ../../lib/glfw3dll.lib ../../lib/mujoco.lib
main.c:9:10: fatal error: GLFW/glfw3.h: No such file or directory
9 | #include <GLFW/glfw3.h>
compilation terminated.
(mujoco.h或gtk.h也出现类似错误。)
我猜它甚至找不到 GLFW 和 mujoco 标头的目录(我不知道为什么)。 我已在 [C/C++ 扩展包:IntelliSense 配置] - [包含路径] 中包含标头路径,如下所示。
${workspaceFolder}/**
C:\...\mujoco-2.2.1-windows-x86_64\include\**
C:\...\mujoco-2.2.1-windows-x86_64\lib\**
C:\...\vcpkg\installed\x64-windows\include\**
C:\...\vcpkg\installed\x64-windows\lib\**
(我没有按字面意思输入“...”。“...”表示我省略的路径的中间。实际上我输入了所有路径。)
我认为我确实正确包含了 GLFW、mujoco 和 GTK 的库和标头的路径。 但终端却说找不到这样的文件或目录。
所以,我想问一下我错过了什么或做错了什么,我应该更改什么才能包含 GTK 库并正确运行模拟。
我在VS2022中练习GTK示例时,我在[属性管理器]-[VC++目录、C/C++、链接器]中正确包含了所有.dll文件、头文件和.lib文件。 -> 效果很好。
当我在 VS2022 中运行模拟时,我使用“cl”作为编译器,使用“nmake”来构建代码,并在终端中输入“run_win.bat”以运行模拟。 -> 效果很好。
在 VSCode 中,我安装了 MinGW,以便使用“gcc”作为编译器,并编辑了批处理文件,如下所示,使用“mingw32-make”构建代码。
mingw32-make
SET var=%cd%
cd ../../bin && quad_leg_floating
cd %var%
正如我之前提到的,
当我在VS2022中练习MuJoCo模拟时,使用指定的makefile(带有cl编译器),我可以通过在命令“nmake”的终端中键入“run_win.bat”来运行模拟。
现在,当我尝试在 VSCode 中运行相同的模拟时,我尝试使用 gcc 作为编译器并编辑批处理文件“mingw32-make”进行构建,但它不起作用。
我尝试在“settings.json”中添加一些设置,如下所示,但它也不起作用。
"C_Cpp.default.includePath": [
"C:/.../mujoco-2.2.1-windows-x86_64/include/mujoco",
"C:/.../mujoco-2.2.1-windows-x86_64/include/GLFW"
]
如果你正在构建一个GUI,你可以使用mujoco中提供的gui,请参阅文件simulate.c
这是一个您可以修改的准系统模拟文件。 https://pab47.github.io/reports/MuJoCo%20UI%20Projectile%20Game.zip