wcscat_s 関数を使用して、1 つの wchar[] を wchar_t* に連結しようとしています。アクセス違反エラーが発生し続けます。
ここにコードがあります
HANDLE hFindDll = FindFirstFile(dllDir,&findDllData);
wchar_t *path = L"C:\\Users\\andy\\Documents\\SampleProj\\";
rsize_t rsize = wcslen(path)+wcslen(findDllData.cFileName)+5;
wcscat_s(path,rsize,findDllData.cFileName);
私が間違っている提案はありますか?
PSwchar_t path[]
の代わりに使用するとwchar_t* path
、デバッグモードで破損警告が表示されますが、続行をクリックするとアプリケーションを壊すことなく実行されます。リリース モードでは、エラーはまったく表示されません。
よろしく、アンディ
更新: ここにコード全体があります: 私が達成したいのは、dll に埋め込まれたリソースから wave ファイルを再生することです...
int _tmain(int argc, _TCHAR* argv[])
{
WIN32_FIND_DATA findDllData;
HANDLE hFindDll;
LPCWSTR dllDir = L"C:\\Users\\andy\\Documents\\SampleProj\\*.dll";
HMODULE hICR;
HRSRC hRes;
hFindDll = FindFirstFile(dllDir,&findDllData);
if(hFindDll != INVALID_HANDLE_VALUE)
{
do
{
const wchar_t * path = L"C:\\Users\\andy\\Documents\\SampleProj\\";
rsize_t rsize = wcslen(path)+wcslen(findDllData.cFileName)+2;
wchar_t dst[1024];
wcscat_s(dst,1024,path); //--> this is where EXCEPTION occurs
wcscat_s(dst,1024,findDllData.cFileName);
hICR = LoadLibrary(dst);
hRes = FindResource(hICR, MAKEINTRESOURCE(200), _T("WAVE"));
if(hRes != NULL)
{
break;
}
}while(FindNextFile(hFindDll,&findDllData));
HGLOBAL hResLoad = LoadResource(hICR, hRes);
PlaySound(MAKEINTRESOURCE(200), hICR,SND_RESOURCE | SND_ASYNC);
}
return 0;
}