看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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