作者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
1F:推 bombilla:问一下第三点,可以在Makefile里头加library路径吗?? 05/24 10:11
2F:→ bombilla:我自己是感觉可以,但没试过~~ 05/24 10:11
3F:→ akasan:to bomb 有root权限好办事 不过直接丢到/usr/lib或 05/24 11:12
4F:→ akasan:/usr/local/lib 之类的比较方便 05/24 11:12