PathRemoveFileSpecA使用的一个报错
背景:在使用PathRemoveFileSpecA没有报错提示,但是在编译的时候会报链接错误。
PathRemoveFileSpecA是一个windwosAPI函数,用于从完整路径最后移除文件名,仅保留路径部分。
moveFileSpec下还有几个类似的接口,应对不同的情况
static std::string getModelBaseDir() {
	char dllPath[MAX_PATH] = { 0 };
	HMODULE hModule = nullptr;
	if (GetModuleHandleExA(
	    GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
	    reinterpret_cast<LPCSTR>(&getModelBaseDir),
    &hModule))
	{
	    if (GetModuleFileNameA(hModule, dllPath, MAX_PATH) > 0) {
	        // 去掉文件名部分,仅保留目录
	        if (PathRemoveFileSpecA(dllPath)) {
	            std::string basePath(dllPath);
	            basePath += "\\models\\wechat_qrcode\\";
	            return basePath;
	       }
	    }
	}
    return ".\\models\\wechat_qrcode\\";
}
解决办法:除了include<Windows.h>和<Shlwapi.h>
还需要把Shlwapi.lib手动加进去
#pragma comment(lib, "Shlwapi.lib")
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号