我的問題是2010 MSVS C++編譯器是從另一個DLL編譯器然後試圖對準堆棧這種方式從一個函數調用在運行時解析(GetProcAddress的+的GetModuleHandle)返回後生成的方式代碼:MSVS 2010 C++編譯器和堆棧對齊問題?
CALL DWORD PTR DS:[2000367C] ; apiresolvedinruntime.dll
ADD ESP,12 ; <- this is the stack alignment
這當然覆蓋返回地址和我的程序崩潰,有人可以解釋爲什麼編譯器調整堆棧時,它真的不應該這樣做嗎?
請發佈(a)函數在模塊中的聲明,(b)如何通過'GetProcAddress'獲取函數指針,以及(c)如何調用函數。 –
聽起來像調用約定不匹配:__stdcall與__cdecl,也許。您是否正確地使用與您調用的函數相匹配的函數指針的類型來註釋函數指針的類型? – reuben