[BCB] 調用DLL函數 [解決stack overflow問題]
2011/06/21 17:01
瀏覽2,961
迴響0
推薦0
引用0
問題描述:
為了讓BCB使用其他C++編譯器產生的DLL檔案,首先使用靜態調度DLL的方式,方法為產生BCB需要的Lib檔案(使用implib MainAlgorithm.lib MainAlgorithm.dll 來產生)
包入*.lib後,在檔案開頭用
extern "C" __declspec(dllimport) int SearchSolution(char* info);
宣告...
結果:當我們執行 迴圈: while(SearchSolution(info)){....} 時候,且執行的東西夠大,立刻就會產生Overflow!!該怎麼解決呢?
這個問題,我解了很久,今天終於在一個大陸的網站找到解答,有趣的是,對方是問另一個完全不相干的問題,我就在想,該不會這有影響吧!一試下去!果然就靈!只能說C++Builder...我真搞不懂你啊XD...
答案....使用動態調度DLL大法!!!!
改宣告
HANDLE hdDll;
int ( *Dll_SearchSolution)(char* info);
hdDll=LoadLibrary("MainAlgorithm.dll");//使用WinAPI
Dll_SearchSolution = (int( *)(char* info))GetProcAddress(hdDll,"SearchSolution");
接下來改使用Dll_SearchSolution 取代原先的函數!解決!
為了讓BCB使用其他C++編譯器產生的DLL檔案,首先使用靜態調度DLL的方式,方法為產生BCB需要的Lib檔案(使用implib MainAlgorithm.lib MainAlgorithm.dll 來產生)
包入*.lib後,在檔案開頭用
extern "C" __declspec(dllimport) int SearchSolution(char* info);
宣告...
結果:當我們執行 迴圈: while(SearchSolution(info)){....} 時候,且執行的東西夠大,立刻就會產生Overflow!!該怎麼解決呢?
這個問題,我解了很久,今天終於在一個大陸的網站找到解答,有趣的是,對方是問另一個完全不相干的問題,我就在想,該不會這有影響吧!一試下去!果然就靈!只能說C++Builder...我真搞不懂你啊XD...
答案....使用動態調度DLL大法!!!!
改宣告
HANDLE hdDll;
int ( *Dll_SearchSolution)(char* info);
hdDll=LoadLibrary("MainAlgorithm.dll");//使用WinAPI
Dll_SearchSolution = (int( *)(char* info))GetProcAddress(hdDll,"SearchSolution");
接下來改使用Dll_SearchSolution 取代原先的函數!解決!
你可能會有興趣的文章:
限會員,要發表迴響,請先登入

