首页 > 解决方案 > 为什么音频文件的相对路径不适用于子文件夹?

问题描述

我正在 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 构建的东西?

标签: c++visual-studio-codefilepathmcisendstring

解决方案


推荐阅读