0

我目前正在使用一些带有 Silverlight 的 COM dll,我遇到了一个奇怪的问题。我创建了两个正在使用的 .NET COM dll,它们都通过 DllImport 引用其他 dll。他们工作得很好。

然后我在项目中添加了第三个 COM dll。这一个也通过 DllImport 引用其他 dll。我一创建它,其他两个就中断了。他们抛出错误,说找不到他们正在使用的其他 dll。然而,第三个 dll 工作正常。

这就是我创建它们的方式

AutomationFactory.CreateObject("Com1");
AutomationFactory.CreateObject("Com2");
AutomationFactory.CreateObject("Com3");

同样,如果我只使用 Com1 和 Com2,它们工作得非常好。如果我添加 Com3 它工作正常,但其他两个找不到他们的原生 dll。

我什至不调用 Com3 上的任何函数,只是创建它,其他函数停止工作。

有任何想法吗?你认为它可能是本机dll吗?我不明白第三个是如何工作的,但其他人不明白,如果是本机 dll 破坏了某些东西,你会认为它们都会停止工作。

4

1 回答 1

0

我想出了一个让它工作的方法。我仍然不是 100% 确定为什么需要这样做。

如果我使用 Directory.SetCurrentDirectory 将当前目录设置为具有本机 dll 的目录,则它可以工作。

Com3 似乎没有更改目录,但由于某种原因,它导致其他 COM dll 在当前工作目录中查找,而不是在它们注册的位置。

于 2012-07-12T02:21:54.573 回答