出現這個問題的原因是導出函數的實際返回值類型和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的值會變,導致程序運行出錯。