Re: [問題] DLL搜尋路徑的問題
※ 引述《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
推
05/24 10:11, , 1F
05/24 10:11, 1F
→
05/24 10:11, , 2F
05/24 10:11, 2F
→
05/24 11:12, , 3F
05/24 11:12, 3F
→
05/24 11:12, , 4F
05/24 11:12, 4F
討論串 (同標題文章)