部署时,在开发计算机上运行应用不会运行
Running App on dev machine won't run when deployed
我有一个简单的 C# 4.5.1 x64 应用程序,它通过/clr C++包装器调用非托管 dll。应用程序在我的开发计算机上运行良好。如果我复制到 Windows Server 2008 或 Windows Server 2012(安装了 Framework 4.5.1),我会收到包装器无法加载的错误。
我已经在部署计算机上安装了DependencyWalker,并得到这个:
LoadLibraryExW("MyWrapper.dll", 0x000.., LOAD_WITH_ALTERED_SEARCH_PATH) called from ...
Loaded "MyWrapper.dll" at ... Successfully hooked module.
Loaded "XX.dll" at ... Successfully hooked module. (Dependency for MyWrapper.dll)
Loaded "YY.dll" at ... Successfully hooked module. (Dependency for MyWrapper.dll)
Unloaded "MyWrapper.dll"
Unloaded "XX.dll"
Unloaded "YY.dll"
LoadLibraryExW("MyWrapper.dll", 0x000.., LOAD_WITH_ALTERED_SEARCH_PATH) returned null. The specified module cannot be found.
有谁知道为什么所有东西都被加载然后卸载然后找不到?
确保已安装所有必要的可再发行组件 (vcredist.exe) 并部署发布版本。
任何非托管的 c/c++ dll 以及 c++/cli dll 都链接到 msvcr。它与Visual Studio一起自动安装在开发人员计算机上。它必须与应用一起安装在部署计算机上。确保重新分发正确的vcredist.exe版本,该版本对应于VS的版本(和服务包)。对于 vs2008,它驻留在 %ProgramFiles%\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages)。注意:如果依赖 walker 使用 LoadModule() 加载或使用 c# 中的 [DllImport("Sample.dll")] 加载方法,则不会显示缺少的 dll。在这种情况下,请直接在依赖关系查看器中打开非托管 dll 并检查缺少的部门。确保非托管 dll 位于应用的搜索路径中。
相关文章:
- 如果从脚本运行应用程序,则在 Linux 中使用 GDB
- Bash 自动完成一个选项,而不运行应用程序
- 以管理员身份运行应用程序时,有没有办法获取非管理员用户名
- 使用 C++ dll 运行 c# 应用程序会生成无法加载异常
- 使用 OpenSSL 运行应用程序时出现问题
- 指定在用户固定我的应用程序时用于运行应用程序的命令参数
- 从Visual Studio运行应用程序会导致错误(由CMake生成)
- BOOST ::日志是每次运行应用程序时都可能旋转文件
- 开发时C++ .lib,运行应用程序时.dll
- 有什么理由更喜欢从 IDE 中运行应用程序而不是运行独立的可执行文件?
- macOS 差异在“访达”和“终端”中运行应用程序
- 使用WordPress在网络服务器上运行C 应用程序
- QT创建者的运行应用程序会出现错误QXCBConnection,然后流产
- 在不同的 Ubuntu 版本中编译和运行 c++ 应用程序
- Visual Studio - C++ - 以 32 位或 64 位构建和运行应用程序 - 从适当的程序文件目录加载 D
- Eclipse 在检查语法时看不到包含文件,但在构建或运行应用程序时会看到
- 在另一台 Mac 上运行应用程序
- 在win8登录屏幕上运行应用程序
- 尝试在Qt中运行应用程序时出错
- 为什么当我在Visual c ++ studio 2010中运行应用程序时光标会转到最后一个文本框