我应该如何获取要与 windows .exe 一起发布的配置文件的绝对路径?

How should I get the absolute path of a configuration file to be published alongside a windows .exe?

我正在用 C++ 开发一个 windows 应用程序。有一个 API 需要配置文件,以及该配置文件的绝对路径。 (https://github.com/ValveSoftware/openvr/wiki/Action-manifest)。如果我了解发布可执行文件的预期做法,我会更容易对此进行推理。

我是否应该将 MyApp.exe 打包到名为 MyApp 的文件夹中,将 MyApp.exe 放在根目录下,并将所有 resources/config 放在旁边?这是否意味着,当 运行 时,从可执行文件中引用的所有相对路径都应该相对于 MyApp 文件夹? 如何获取所有相对路径相对的文件夹的绝对路径?(通过简单地将绝对路径与相对路径连接起来,我可以获得配置文件的完整绝对路径配置文件的路径,我应该控制...)

编辑:澄清一下,API 要求文件路径是绝对路径。见link:"The full path to the file must be provided; relative paths are not accepted." 我不是在寻找让我 不需要 绝对文件路径的 C++ 解决方法:我需要找到一种方法来获取绝对文件路径,因为它是 API.

Windows.

上的操作方法如下
#include <Windows.h>
#include <iostream>

int main(){
    /*If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process (.exe file).*/
    HMODULE selfmodule = GetModuleHandleA(0);

    char absolutepath[MAX_PATH] = {0};

    uint32_t length = GetModuleFileNameA(selfmodule,absolutepath,sizoef(absolutepath));

    //lets assume our directory is C:/Users/Self/Documents/MyApp/MyApp.exe
    //let's backtrack to the /
    char* path = absolutepath+length;
    while(*path != '/'){
        *path = 0;
        --path;
    }



    //Now we are at C:/Users/Self/Documents/MyApp/
    //From here we can concat the Resources directory

    strcat(absolutepath,"Resources/somefile.txt");

    std::cout << absolutepath;
    //C:/Users/Self/Documents/MyApp/Resources/somefile.txt

    return 0;
}