失敗源代碼以下:app
string programDir = GetOcxPath(file);//獲得ini配置文件路徑 ret = GetPrivateProfileString(app,key,"",returnString,MAX_PATH,"c:\\base64bmp_config.ini");
這段代碼看起來沒任何問題,在MFC ocx工程下編譯連接都ok,但運行一直內存錯誤。ide
一直覺得是ocx註冊沒有替換,或者是GetOcxPath存在內存錯誤,將GetOcxPath單元測試和斷點調試沒有任何問題。單元測試
最後增長了文件存在判斷,不存在就讀取默認文件就OK了。測試
改進後源代碼以下:調試
string programDir = GetOcxPath(file);//獲得ini配置文件路徑 DWORD ret; FILE* fp = fopen(programDir.data(),"r"); if(!fp){ ret = GetPrivateProfileString(app,key,"",returnString,MAX_PATH,"c:\\base64bmp_config.ini"); }else{ ret = GetPrivateProfileString(app,key,"",returnString,MAX_PATH,programDir.data()); }