【问题标题】:Running a C# Windows Forms application on Windows 7 in Parallels 8 error在 Parallels 8 中的 Windows 7 上运行 C# Windows Forms 应用程序错误
【发布时间】:2013-03-11 09:26:04
【问题描述】:

我编写了一个非常简单的C#Windows Forms 应用程序,一位同事想在Windows 7 上使用Parallels 8 对其进行测试,因为他只有一台Mac。

问题是,当他使用调试文件夹中的 EXE 文件启动它时,他得到了这个错误:

启动 OMAPI 时出错(无法加载 DLL 'libomapi.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E))检查所需的 .dll 文件是否存在正确的版本:OmApiNet.dll libomapi。 dll

从下图可以看出,所需的 DLL 文件就在同一个文件夹中,如果他将此调试文件夹带到 Windows PC 上它工作正常,所以它肯定是某种虚拟机或 Parallels-具体问题。

我该如何解决这个问题?

我没有真正使用足够多的虚拟机来知道问题可能是什么......

【问题讨论】:

  • 可执行文件与库的格式是什么?鉴于它在同一个文件夹中,它应该可以找到它,所以我想知道这是否真的是一个糟糕的格式问题(32 位与 64 位)?
  • 您可能还会发现这是一个外部依赖问题,您的并行设置中不存在与您的其他设置相同的内容,请尝试使用 Dependency Walker - dependencywalker.com
  • 我看到如果项目是为 AnyCPU 编译但依赖库是 x86 而目标操作系统是 x64 时会发生一些有趣的事情。
  • 确保您的所有依赖 DLL 和您的应用程序都使用相同的处理器架构(x86 或 x64)构建。远离 AnyCPU 与虚拟机。
  • (抱歉,回复晚了)啊,好吧,我会问他他的 Parallels 设置是什么,我会用 x86/x64 而不是 AnyCPU 重新编译并报告。感谢大家迄今为止的帮助。

标签: c# winforms virtualization virtual-machine parallels


【解决方案1】:

看起来您试图从网络共享运行应用程序,.NET 平台禁止在其中运行应用程序,因为它存在安全风险。尝试将文件复制到虚拟机上的其他位置,例如 C:\Temp。

【讨论】:

    【解决方案2】:

    这可能更多是网络驱动器问题。让他将该文件夹从 Y: 驱动器(从他的 Mac 共享)复制到 C: 驱动器并从那里再次运行。

    【讨论】:

      【解决方案3】:

      在其上运行ProcMon 并查看它在尝试查找文件时真正做了什么会很有趣。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-09
        • 1970-01-01
        • 1970-01-01
        • 2011-03-21
        相关资源
        最近更新 更多