【发布时间】:2012-07-11 17:26:14
【问题描述】:
我目前正在使用一些带有 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 破坏了某些东西,你会认为它们都会停止工作。
【问题讨论】:
-
您在做什么来确保可以找到这些本机 DLL?如果没有,那么第三个可以做一些改变 Windows 使用的搜索策略的事情,包括更改默认工作目录或更改 PATH 环境变量。
-
这就是我的想法,但我现在很喜欢 COM 的东西。我只是将本机 dll 与注册的 COM dll 放在同一目录中。这在第三个 COM dll 之前工作正常。我不知道如何使用 COM 对象处理工作目录。有没有办法让我更具体地了解 DllImport?我只是尝试将完整路径作为名称,它可以找到它。
-
我也试过在 System32 中删除本机 dll,但它仍然不起作用。
标签: .net silverlight dll com native