【发布时间】: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