gpt4 book ai didi

c# - 在开发机器上运行的应用程序在部署时不会运行

转载 作者:行者123 更新时间:2023-11-28 03:00:28 24 4
gpt4 key购买 nike

我有一个简单的 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 一起自动安装在开发人员机器上。它必须与应用程序一起安装在部署计算机上。确保重新分发与您的 VS 版本(和服务包)相对应的正确 vcredist.exe 版本。对于 vs2008,它位于 %ProgramFiles%\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages)。注意:如果使用 LoadModule() 加载依赖 walker 或使用 c# 中的 [DllImport("Sample.dll")] 加载方法,Dependency walker 不会显示缺少的 dll。在这种情况下,直接在 Dependency walker 中打开非托管 dll 并检查缺少的 deps。确保非托管 dll 在您应用的搜索路径中。

关于c# - 在开发机器上运行的应用程序在部署时不会运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20977768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com