公告

國明的網路筆記

2016年5月29日 星期日

調用DLL函數時出現stack overflow問題的解決辦法

調用DLL函數時出現stack overflow問題的解決辦法

為了讓BCB使用其他C++編譯器產生的DLL檔案,首先使用靜態調度DLL的方式,方法為產生BCB需要的Lib檔案(使用implib MyDLL.lib MyDLL.dll 來產生)

計畫檔加入 *.lib 後,在檔案開頭用
extern "C" __declspec(dllimport) int  SearchSolution(char* info);

宣告...

結果:當我們執行迴圈:while(SearchSolution(info)){....}  時候,且執行的東西夠大,立刻就會產生Overflow!該怎麼解決呢?

這個問題,在網路終於在一個解答,有趣的是,對方是問另一個完全不相干的問題,我就在想,該不會這有影響吧!一試下去!果然解決!!

答案....使用動態調用DLL大法!!!!

改宣告

HANDLE hdDll;

int ( *Dll_SearchSolution)(char* info);

hdDll=LoadLibrary("MainAlgorithm.dll");//使用WinAPI

Dll_SearchSolution =  (int( *)(char* info))GetProcAddress(hdDll,"SearchSolution");

接下來改使用 Dll_SearchSolution 取代原先的函數!解決!

沒有留言:

張貼留言