【问题标题】:C# Dll import not working with some computersC# Dll 导入不适用于某些计算机
【发布时间】:2016-07-30 16:25:30
【问题描述】:

我有一个使用 VS2013 编译的 C++ dll。

我在我的 C# 应用程序中这样称呼它:

[DllImport("myDLL.dll", EntryPoint = "RestartIfNecessary", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool RestartIfNecessary(uint uiAppId);

而且效果很好。

但是,一旦应用程序处于生产状态,一些用户就会出现以下错误: 无法加载 DLL 'myDLL.dll':找不到指定的模块。 (HRESULT 异常:0x8007007E)

我无法找到为什么在某些计算机上会出现此错误。通过删除 Microsoft Visual C++ 2013 Redistributable (x86) 和 (x64) 并重新安装它们,我们已经能够为某些用户解决此问题。

我的 C# 应用程序已编译为在 x86 上运行。 我有一个64位的w10,它工作正常,所以我不知道它是否与windows有关。

你有什么提示可以帮助我解决这个问题吗?

编辑:这里是依赖walker的结果:

在dependendy walker中我发现了3个红色的dll,我不知道它们是否重要:

API.dll 是第三方 dll(myDLL 是此 API 的包装器)

【问题讨论】:

    标签: c# c++ dll


    【解决方案1】:

    错误意味着在DLL search path 上找不到myDLL.dll 本身或其依赖的DLL 之一。

    确保myDLL.dll 放置在您的应用可以找到的位置。您可以在有问题的计算机上将myDLL.dll 加载到Dependency Walker 中,以查明任何缺失的依赖项。

    【讨论】:

    • 谢谢,我已经编辑并添加了dependency walker的结果。
    • 能否请您重试插入依赖遍历器结果?我只在您的帖子中看到 [![enter code here][1]][1]
    • 你会找到答案here
    • 谢谢,我已经让他使用x86版本了。请查看我对新结果的编辑。
    • 所以缺少依赖 ext-ms-win-wlan-onexui-l1-1-0.dll 和 ieshims.dll。尝试使用Everything 实用程序在磁盘上查找它们
    猜你喜欢
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 2016-12-19
    相关资源
    最近更新 更多