0
在我的情況下,我通過GetProcAddress獲得了一個有效的導出函數名的函數指針,並且一旦我的應用程序調用導出的函數,就會在顯示輸出後崩潰。如果我從函數和typdef中刪除參數並直接傳遞19342「getNumChildShapes(19342)」,那麼一切都可以正常工作而不會崩潰。函數指針通過GetProcAddress提取崩潰應用程序
在我的應用程序:
typedef INT (CALLBACK* LPFNDLLFUNC2)(INT modelid);
int codecall()
{
HINSTANCE hDLL;
LPFNDLLFUNC2 lpfnDllFunc2;
INT value = 0;
INT pass = 19342;
hDLL = LoadLibrary(L"myDLL");
if (hDLL != NULL)
{
lpfnDllFunc2 = (LPFNDLLFUNC2)GetProcAddress(hDLL, "get_children");
if (!lpfnDllFunc2)
{
// handle the error
FreeLibrary(hDLL);
return 0;
}
else
{
// call the function
value = lpfnDllFunc2(pass);
}
}
printf("Children: %i", value);
FreeLibrary(hDLL);
return 1;
}
在我的DLL:
extern "C"
{
__declspec(dllexport) int get_children(int modelid)
{
return getNumChildShapes(modelid);
}
}
謝謝,它工作。順便說一句,你能否給我提供一個鏈接,讓所有調用約定都有文檔記錄? – ceptonite
此MSDN頁似乎覆蓋它:https://msdn.microsoft.com/en-us/library/zkwh89ks.aspx – DavidK