2011年1月4日 星期二

dll檔集中放在同一個資料夾呼叫問題

作者: UNARYvvv (有趣生活) 看板: C_and_CPP
標題: Re: [問題] dll檔集中放在同一個資料夾呼叫問題
時間: Sun Jul 12 17:52:36 2009

※ 引述《maplefog (楓霧)》之銘言:
: 感謝回應,讓我後來有成功讀到了
: 以下是完整作法:
: 我程式是用BCB寫的,一開始讀執行檔的絕對路徑
: AnsiString exepath = ExtractFilePath(Application->ExeName);
: 然後接著就是希望把全部dll檔放到一個名叫dll的資料夾裡
: AnsiString dllpath = exepath+"dll/fault.dll";
: AnsiString folderpath = exepath+"dll/";
: SetCurrentDirectory(pathfolder.c_str());  //把目錄設到這個資料夾
: int (*fault)(void);
: HINSTANCE hInst=LoadLibrary(dllpath.c_str());
: (FARPROC &)fault=GetProcAddress(hInst,"fault");
: check = fault();
: FreeLibrary(hInst);
: 重點是設定目錄,這樣就可以呼叫到其他的dll檔了



補充一下,其實 MSDN 有建議另一個作法

LoadLibrary ( http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx )

"The search path can be altered using the SetDllDirectory function.
 This solution is recommended instead of using SetCurrentDirectory
 or hard-coding the full path to the DLL."


可以用 SetDllDirectory API

http://msdn.microsoft.com/en-us/library/ms686203(VS.85).aspx


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.126.2.150

沒有留言:

張貼留言

您好.本資料庫並非第一手資料.如果你有對文章作者的詢問,意見與需求,請自行找尋文章作者並提供意見,謝謝.