我在c#里调用vc的DLL,VC里的DLL是对文件的读写操作,
但第一边执行正常,的二边执行是提示内存错误,为什么?
文件资源已经释放了,
是不是C#引入地是静态函数的原故???
提示错误是:“0x77f856a3”指令引用的“0xb6afb6fc”内存,该内存不能为“read”.
但第一边执行正常,的二边执行是提示内存错误,为什么?
文件资源已经释放了,
是不是C#引入地是静态函数的原故???
提示错误是:“0x77f856a3”指令引用的“0xb6afb6fc”内存,该内存不能为“read”.
int CatWavFile(const char* sWavFile, PBYTE pBufNew, TTSDWORD dwBufNewLen)
{
FILE* fp;
__try
{
TTSDWORD dwFileSize, dwDataSize, dwWavSize;
if(dwBufNewLen <= 0)
return TTSERR_OK;
if(sWavFile == NULL)
return TTSERR_READFILE;
fp = fopen(sWavFile, "r+b");
if(fp == NULL)
{
fp = fopen(sWavFile, "wb");
if(fp == NULL)
return TTSERR_WRITEFILE;
}
fseek(fp, 0, SEEK_END);
dwFileSize = ftell(fp);
if(dwFileSize == 0)
{
fwrite(pBufNew, 1, dwBufNewLen, fp);
}
else
{
fwrite(pBufNew + 44, 1, dwBufNewLen - 44, fp);
dwFileSize = dwFileSize + dwBufNewLen - 44;
dwDataSize = dwFileSize - 44;
dwWavSize = dwFileSize - 8;
fseek(fp, 44 - sizeof(TTSDWORD), SEEK_SET);
fwrite(&dwDataSize, 1, sizeof(TTSDWORD), fp);
fseek(fp, 4, SEEK_SET);
fwrite(&dwWavSize, 1, sizeof(TTSDWORD), fp);
}
return TTSERR_OK;
}
__finally
{
fclose(fp);
}
}