作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] DLL搜尋路徑的問題
時間Sun May 24 00:36:15 2009
※ 引述《photon3108 (John)》之銘言:
: 我想要把執行檔放在 game 資料夾裡面,把 DLL 放在 game\dlls 裡面,
: 但是我不知道如何在啟動執行檔時,自動去找 game\dlls 裡面的 dll 檔,
: (1). 請問該怎麼做呢?
寫一個 shell script 或 batch file
把該目錄加入 LD_LIBRARY_PATH (Linux) 或 PATH (Windows) 環境變數中
然後再呼叫你寫的主程式
: (2). 請問有辦法把自動搜尋 ./dlls 寫在程式碼裡面嗎?
不行
因為 dynamic linking 是在你的程式碼開始執行前做的事
找不到 DLL 你的程式就無法執行
自然也沒辦法執行到「設定自動搜尋目錄」的地方
但還有另一個辦法
那就是用 dlopen / LoadLibrary 等函式
在執行時把 DLL 載入到記憶體中執行
使用這個方法你可以在程式中自行設定搜尋目錄
但因為你必須使用 function pointer 來呼叫函式
效率上會稍微差一點
: (3). Linux 下要用什麼方法自動搜尋 ./dlls 裡面的 so 檔呢?
: 謝謝。
Linux 下就是去設定 LD_LIBRARY_PATH 這個環境變數
或是修改 /etc/ld.so.conf 這個檔案,把 dll 目錄加到裡面
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.150.29
推 bombilla:問一下第三點,可以在Makefile裡頭加library路徑嗎?? 05/24 10:11
→ bombilla:我自己是感覺可以,但沒試過~~ 05/24 10:11
→ akasan:to bomb 有root權限好辦事 不過直接丟到/usr/lib或 05/24 11:12
→ akasan:/usr/local/lib 之類的比較方便 05/24 11:12