还是不行,老样子。我得从win11的programmes下面把文件复制出来,放到桌面上,建个文件夹,然后无论是在文件夹内运行或是发个快捷方式到桌面,都能正常运行了。难道是我根据获取的路径创建数据库的方式有问题。我把获取的路径转换为unicode,然后再该路径下自动生成数据库。
char* CDataBase::AnsiToUtf8(char* str)
{
WCHAR* strA;
int i= MultiByteToWideChar(CP_ACP,0,str,-1,NULL,0);
strA = new WCHAR[i];
MultiByteToWideChar(CP_ACP,0,str,-1,strA,i);
i= WideCharToMultiByte(CP_UTF8,0,strA,-1,NULL,0,NULL,NULL);
char *strB=new char[i];
WideCharToMultiByte(CP_UTF8,0,strA,-1,strB,i,NULL,NULL);
//strB即为所求
return strB;
}
贴出代码。我这边测试win11无异常。
Win11桌面路径中是不是有中文的?工程项目字符集用的是UNICODE吗?
如果用的是多字节字符集,设置成unicode的,用下边代码获取路径
TCHAR szExe[MAX_PATH];
memset(szExe, 0, sizeof(TCHAR)*MAX_PATH);
GetModuleFileName(NULL, szExe, MAX_PATH);