Rundll32加载顺序问题

时间:2009-09-10 07:42:47

标签: c++ deployment

我的产品包括两个dll(为了清晰起见,A.dll和B.dll),A.dll依赖于B.dll。 A和B dll都在同一个文件夹中(例如c:\ app)。同时旧版本的B.dll在Windows \ System32文件夹中。当我尝试从命令提示符运行以下命令时(当前文件夹是c:\ app):

rundll32.exe "c:\app\A.dll",DoWork

我收到错误,因为rundll32使用来自System32文件夹的旧版B.dll。我尝试使用A.dll库的DllMain函数中的SetDllDirectory API将c:\ app文件夹添加到搜索路径,但它对我不起作用。
我找不到有关rundll32内部的任何有用和完整的信息或有关dll加载顺序的任何信息 是否可以在此部署配置中成功执行rundll32? (我的意思是从c:\ app文件夹加载新的B.dll版本。)

2 个答案:

答案 0 :(得分:0)

我将摆脱旧的Dll,或者为新的dll使用其他名称。有两个版本的东西应该做同样的事情,并赋予它相同的名称,可能会造成严重破坏。

答案 1 :(得分:0)

在SO

上的DLL地狱

嗯,它以复古的方式很酷。这是一个想法:尝试将rundll32.exe复制到与新dll和您的产品相同的文件夹中,然后从那里运行它。它可能有用......