.net Silverlight COM路径问题
我目前正在使用Silverlight的一些COM DLL,我遇到了一个奇怪的问题。我创建了两个.NET COM DLL,它们都通过DllImport引用其他DLL。他们工作得很好 然后我在项目中添加了第三个COM dll。此DLL还通过DllImport引用其他DLL。我一创建它,其他两个就中断了。它们抛出错误,表示找不到正在使用的其他DLL。然而,第三个dll工作正常 这就是我创建它们的方式.net Silverlight COM路径问题,.net,silverlight,dll,com,native,.net,Silverlight,Dll,Com,Native,我目前正在使用Silverlight的一些COM DLL,我遇到了一个奇怪的问题。我创建了两个.NET COM DLL,它们都通过DllImport引用其他DLL。他们工作得很好 然后我在项目中添加了第三个COM dll。此DLL还通过DllImport引用其他DLL。我一创建它,其他两个就中断了。它们抛出错误,表示找不到正在使用的其他DLL。然而,第三个dll工作正常 这就是我创建它们的方式 AutomationFactory.CreateObject("Com1"); AutomationF
AutomationFactory.CreateObject("Com1");
AutomationFactory.CreateObject("Com2");
AutomationFactory.CreateObject("Com3");
同样,如果我只使用Com1和Com2,它们工作得非常好。如果我添加Com3,它可以正常工作,但其他两个无法找到其本机DLL
我甚至不调用Com3上的任何函数,只需创建它,其他函数就停止工作
有什么想法吗?你认为它可能是本地dll吗?我不明白第三个是如何工作的,但其他人不明白,你可能会认为,如果是本机dll破坏了某些东西,它们都会停止工作。我找到了一种方法让它工作。但我仍然无法100%确定为什么需要这样做 如果我使用Directory.SetCurrentDirectory将当前目录设置为具有本机DLL的目录,它将正常工作
看起来Com3没有更改目录,但由于某种原因,它导致其他COM DLL在当前工作目录中查找,而不是在注册位置查找。您如何确保可以找到这些本机DLL?如果什么都不做,那么第三个可以改变Windows使用的搜索策略,包括更改默认工作目录或更改PATH环境变量。这是我的想法,但我现在非常喜欢COM。我只是把本机dll和注册的COM dll放在同一个目录中。在第三个COM dll出现之前,这一切都很正常。我不知道如何使用COM对象处理工作目录。有什么方法可以让我更具体地了解DllImport吗?我只是尝试将完整路径作为名称,它可以找到它。我还尝试删除System32中的本机DLL,但仍然不起作用。