【问题标题】:Silverlight COM path issuesSilverlight COM 路径问题
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2018-05-03
    • 2017-10-02
    • 2012-02-17
    • 2011-12-27
    • 2019-12-14
    • 1970-01-01
    相关资源
    最近更新 更多