【问题标题】:DLLNotFoundExceptionDLLNotFoundException
【发布时间】:2011-05-26 20:31:15
【问题描述】:

我正在使用一个 DLL,它是一个名为 Unity3d 的游戏引擎的插件。我在 Windows 7 64 位终极版的 Visual C++ Express 2010 中创建了 DLL。 DLL 在最初创建它的机器上正常运行。

问题是 DLL 在另一台机器上的 Unity3d 编辑器中无法运行,并给出一个错误,基本上表明 DLL 缺少一些依赖项。目标机器正在运行 Windows 7 Home 64 位(如果相关)

Dependency Walker 错误日志的结果:

错误:并排配置信息 “c:\users\dewayne\desktop\shared\vrpnplugin\unityplugin\build\release\OPTITRACKPLUGIN.DLL” 包含错误。应用程序无法启动,因为它 并排配置不正确。请看申请 事件日志或使用命令行 sxstrace.exe 工具了解更多详细信息 (14001).
错误:由于隐式依赖模块中缺少导出函数,至少有一个模块存在未解析的导入。
错误:发现具有不同 CPU 类型的模块。
警告:至少没有找到一个延迟加载依赖模块。
警告:由于延迟加载依赖模块中缺少导出功能,至少有一个模块存在未解析的导入。

可以在here 找到 Visual C++ Express 2010 项目和解决方案文件。 zip 为 79MB,还包含其依赖项。

有问题的 DLL 是 OptiTrackPlugin.dll

【问题讨论】:

  • “请查看应用程序事件日志”。没有比这更明确的了。你有吗?
  • 你运行过 sxstrace.exe 吗?它确实让您对出了什么问题有一个很好的了解

标签: c++ winapi unity3d


【解决方案1】:

检查 dll 中的依赖项。我使用depends.exe 依赖walker,它曾经与Visual C++ 捆绑在一起,但MS 不再提供它。可以单独下载:http://www.dependencywalker.com/

【讨论】:

    【解决方案2】:

    您可能错过了使用您的 DLL 的客户端上的 MS C++ 运行时。 如果您在 Visual Studio 中构建它,则需要在客户端上安装 CRT 和 C++ RT。 Dependency Walker 肯定会检测到它。

    干杯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-01
      • 2013-07-26
      • 2011-03-17
      • 2012-11-05
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多