win32下使用相对exe文件的绝对路径资源

简介: 在使用VC++进行开发时,如果按F5进行Debug时,当前相对资源是相对工程的vcxproj的文件夹目录,而直接双击运行exe时,资源是相对exe的文件夹目录。为了兼容这二者,最好使用绝对路径,这样无法是Debug还是直接双击运行exe时都不会遇到无法加载资源的问题。

在使用VC++进行开发时,如果按F5进行Debug时,当前相对资源是相对工程的vcxproj的文件夹目录,而直接双击运行exe时,资源是相对exe的文件夹目录。为了兼容这二者,最好使用绝对路径,这样无法是Debug还是直接双击运行exe时都不会遇到无法加载资源的问题。

 

char* WcharToChar(const wchar_t* wp)
{
    char *m_char;
    int len = WideCharToMultiByte(CP_ACP, 0, wp, wcslen(wp), NULL, 0, NULL, NULL);
    m_char = new char[len + 1];
    WideCharToMultiByte(CP_ACP, 0, wp, wcslen(wp), m_char, len, NULL, NULL);
    m_char[len] = '\0';
    return m_char;
}

wchar_t* CharToWchar(const char* c)
{
    wchar_t *m_wchar;
    int len = MultiByteToWideChar(CP_ACP, 0, c, strlen(c), NULL, 0);
    m_wchar = new wchar_t[len + 1];
    MultiByteToWideChar(CP_ACP, 0, c, strlen(c), m_wchar, len);
    m_wchar[len] = '\0';
    return m_wchar;
}

//int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
int _tmain(int argc, _TCHAR* argv[])
{
    // https://stackoverflow.com/questions/1528298/get-path-of-executable
    HMODULE hModule = GetModuleHandleW(NULL);
    WCHAR path[MAX_PATH];
    GetModuleFileNameW(hModule, path, MAX_PATH);

    // setting -> link add Shlwapi.lib   #include <Shlwapi.h>
    PathRemoveFileSpec(path);

    //OutputDebugStringW(path);

    wcscat(path, L"\\main.lua");
    char *pcstr = WcharToChar(path);

    return 0;
}
目录
相关文章
|
前端开发 Java 测试技术
基于SSM的大学生电信诈骗宣传系统设计与实现
基于SSM的大学生电信诈骗宣传系统设计与实现
688 0
|
JavaScript 前端开发
JavaScript中哪一种循环最快
JavaScript中哪一种循环最快
114 0
|
5月前
|
Linux 虚拟化 iOS开发
macOS Sonoma 14.8 (23J21) Boot ISO 原版可引导镜像下载
macOS Sonoma 14.8 (23J21) Boot ISO 原版可引导镜像下载
3450 0
macOS Sonoma 14.8 (23J21) Boot ISO 原版可引导镜像下载
|
自然语言处理 Python
NLTK 库
【11月更文挑战第18天】
1159 11
|
数据采集 前端开发 JavaScript
Next14 Server Components 和 Client Components 的区别
Next14 Server Components 和 Client Components 的区别
375 8
|
存储 缓存 Dart
Flutter&鸿蒙next 封装 Dio 网络请求详解:登录身份验证与免登录缓存
本文详细介绍了如何在 Flutter 中使用 Dio 封装网络请求,实现用户登录身份验证及免登录缓存功能。首先在 `pubspec.yaml` 中添加 Dio 和 `shared_preferences` 依赖,然后创建 `NetworkService` 类封装 Dio 的功能,包括请求拦截、响应拦截、Token 存储和登录请求。最后,通过一个登录界面示例展示了如何在实际应用中使用 `NetworkService` 进行身份验证。希望本文能帮助你在 Flutter 中更好地处理网络请求和用户认证。
773 1
|
数据可视化 关系型数据库 MySQL
Docker可视化工具-Portainer
Docker可视化工具-Portainer
534 1
|
JavaScript 前端开发 Python
python中的OS模块的基本使用
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。博客分享前端技术及全栈开发经验,持续更新中,期待您的关注和支持!🎉🎉🎉
260 0
|
JavaScript
vue中一个标签中含有多个class(其中包含三元表达式)的写法
vue中一个标签中含有多个class(其中包含三元表达式)的写法
776 2

热门文章

最新文章