進入動態鏈接庫函數後,傳入指針改變的bug

出現這個問題的原因是導出函數的實際返回值類型和GetProcAddress獲得函數指針時定義的函數指針的函數返回值類型不一致導致。

如:導出函數爲

extern "C" bool LICENSE_CLASS _stdcall isLicensed(char* licensefile);

使用時卻爲

typedef string(*func_isLicensed)(char* );

HANDLE g_hinst = LoadLibrary("xxxx.dll");

pfFunc_isLicensed = (func_isLicensed)GetProcAddress(g_hinst, "isLicensed");

 

若調試,進入isLicensed前和進入isLicensed後指針licensefile的值會變,導致程序運行出錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章