調用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 取代原先的函數!解決!
沒有留言:
張貼留言