有如下目录结构程序目录
|
———— myapp.exe
|
———— dll目录1
| |
| ———— a1.dll
| |
| ———— b.dll
———— dll目录2
|
———— a2.dll
|
———— b.dll
我用LoadLibraryEx调用a1.dll和a2.dll,使用参数LOAD_WITH_ALTERED_SEARCH_PATH,由于b.dll中有同名函数,调用a1.dll或a2.dll函数时会发生访问b.dll中函数报错,我想应该是,同名函数的冲突问题,请问如何加载a1.dll和a2.dll使得a1.dll在dll目录1中访问b.dll,而a2.dll在dll目录2中访问b.dll?
|
———— myapp.exe
|
———— dll目录1
| |
| ———— a1.dll
| |
| ———— b.dll
———— dll目录2
|
———— a2.dll
|
———— b.dll
我用LoadLibraryEx调用a1.dll和a2.dll,使用参数LOAD_WITH_ALTERED_SEARCH_PATH,由于b.dll中有同名函数,调用a1.dll或a2.dll函数时会发生访问b.dll中函数报错,我想应该是,同名函数的冲突问题,请问如何加载a1.dll和a2.dll使得a1.dll在dll目录1中访问b.dll,而a2.dll在dll目录2中访问b.dll?
解决方案 »
- ping命令 外网回显
- AfxGetInstance和AfxGetResource两个函数有什么区别
- 为什么图像控件显示的位图在窗口刷新时消失了?
- VC6+VisualAssistX+金山词霸2005
- 如何改正:Warning: calling DestroyWindow in CDialog::~CDialog --OnDestroy or PostNcDestroy in derived class will not be called.
- 谁能改好这句SQL,送分!
- 1000分,如何捕获windows网线没连好的事件
- 请教?给分
- 程序员薪资调查!
- 对数据表的Date类型字断如何构造SQL查询语句?
- libcurl CURLOPT_WRITEFUNCTION 回调问题
- 如何用数组来保存CTreeCtrl里的数据?
通过LOAD_WITH_ALTERED_SEARCH_PATH能实现吗?我发现是先加载a1.dll则dll目录1的b.dll起效果,否则dll目录2的b.dll起效果
1、显式加载b.dll,指定明确的目录。
2、将其中的一个b.dll改为其他名字,如bb.dll。
搜索路径我觉得没有必要,像是在给自己找麻烦
另外可以判断一下dll的版本号,看api是否和exe要求的版本一样
你可以在dll和exe里写同一相同的版本号宏来判断彼此是否对应
复制“b.dll”,将副本改为“bb.dll”,LoadLibrary时加载“bb.dll”,怎么会比较难呢?