我正在 VSCode 中开发一个项目,我的文件夹配置当前布局如下:
- 工作区文件夹
- 垃圾桶
- 源代码
- 资源
- 音乐
当我构建项目时,我在 tasks.json 文件中指定了它,如下所示:
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "C++ Program",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/Fe:",
"${workspaceFolder}\\bin\\theProgram.exe",
"${workspaceFolder}\\src\\*.cpp"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$msCompile"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
正如预期的那样,这将在 /src 中构建我的 2 个 cpp 文件并在 /bin 文件夹中创建一个 exe。没有像我预期的那样运行的是音频。我无法弄清楚为什么我想要的配置(如下)不起作用。
在主 .cpp 文件(路径 = ${workspaceFolder}\src\main.cpp)中,我有 windows.h mciSendStringW 函数使用的以下变量:
wstring current_song;
current_song = L"../resources/music/song.mp3";
我希望这可以工作 - SRC cpp 和程序 exe 都位于资源文件夹之外的一个文件夹,但相对路径似乎不起作用。
我怀疑相对路径是workspaceFolder的,所以我测试了将路径更改为:
current_song = L"./resources/music/song.mp3";
从 /bin 文件夹运行 exe 时,音频仍然不起作用。当我构建 exe 并将其从 /bin 目录移动到 workspaceFolder 时,音频播放正常。
为什么 ../ 文件路径不起作用,或者这里还有其他我不理解的关于相对文件路径和 VSCode 中的 CL 构建的东西?