vc动态链接库的调用 LoadLibrary()路径问题

[复制链接]
查看11 | 回复5 | 2009-3-13 12:28:50 | 显示全部楼层 |阅读模式
我现在用VC编写一个动态链接库, 应用程序设置好相对路径调用我写的DLL, 而我的DLL 又调用了别的DLL,我调用的DLL和我写的DLL是在同一个目录下的,请问我在编写DLL时用LoadLibrary()加载其他的DLL的时候怎么解决这个路径问题,谢谢
请问 我再DLL 写BSTR[100]; GetCurrentDir(BSTR);可是提示 不认识这函数 ,谢谢

回复

使用道具 举报

千问 | 2009-3-13 12:28:50 | 显示全部楼层
你在问题补充里面说的非常正确你需要通过改变工作目录(work path)来使得你的DLL能够正确的加载别人的DLL,我也遇到过这个问题根据你说的情况,你应该这样1 用GetCurrentDir保存当前的工作目录2 用SetCurrentDir将当前的工作目录,设置为你的DLL所在的路径,需要使用绝对路径3 用LoadLibrary你的DLL4 使用SetCurrentDir恢复到原来的工作路径...
回复

使用道具 举报

千问 | 2009-3-13 12:28:50 | 显示全部楼层
DLL加载进程序的时候就属于程序的一部分所以 LoadLibrary 的当前目录就是EXE所在的目录。举个例子c:\a\1.exec:\b\2.dllc:\c\3.dll这种情况 1.exe 加载2.dll 就是 LoadLibrary("..\b\2.dll")而2.dll加载3.dll一样的写法。...
回复

使用道具 举报

千问 | 2009-3-13 12:28:50 | 显示全部楼层
默认搜索顺序是:1.当前程序所在目录下查找2.系统环境变量Path指定的有个系统路径序列,按照先后顺序一步步查找。最好将第三方dll的路径加入系统环境变量Path的最后。或者绝对路径或者相对路径 .. or . 来控制...
回复

使用道具 举报

千问 | 2009-3-13 12:28:50 | 显示全部楼层
同一目录的话直接写上DLL的名字就可以了。不放心的话就写上绝对路径。...
回复

使用道具 举报

千问 | 2009-3-13 12:28:50 | 显示全部楼层
charexepath[MAX_PATH];chardllpath[MAX_PATH];GetCurrentDirectory(MAX_PATH,exepath);//保存当前工作目录GetModuleFileName(GetModuleHandle("我写的DLL的名字.dll"),dllpath,MAX_PATH);...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行