当我使用CreateProcess
启动正在加载我的插件的应用程序(InDesign)时,我的插件无法加载,因为我的插件使用的DLL无法加载。奇怪的是,如果我双击应用程序或从命令行打开它,我的插件加载正常。
我调用CreateProcess
的应用程序非常大,本身使用了几个DLL,其中一些也被我的插件使用。我已将它缩小到将无法加载的DLL。我将其设置为延迟加载,插件现在加载但在我调用它时不会加载该DLL。
我使用“Process Explorer”检查应用程序的PATH,以确保它与从命令行打开它时的相同。故障DLL的路径在PATH环境中,对于其他加载正常的DLL也是如此。
我使用和不使用插件启动许多不同的应用程序,之前从未见过类似的东西。
有人知道可能会发生什么吗?
糟糕...
嗯,我对env PATH错了,根据应用程序(InDesign)的启动方式而有所不同。看起来QuickTime更改了我的应用程序的PATH,将它的“Apple Application Support”文件夹放在顶部。在该文件夹中是一个与我正在使用的DLL名称相同的DLL,即libxml2.dll。当我使用LoadLibrary在我的插件中加载libxml2.dll时,找不到msvcr80.dll。羊肉。
抱歉分心...
答案 0 :(得分:0)
加载应用程序和/或插件时检查工作路径。资源管理器和命令提示符通常显式设置,但另一个调用CreateProcess()
的应用程序可能不会。