Den*_*ore 10 c# dependencies c++-cli cmake visual-studio-2010
我的应用程序编译正常,但我得到以下运行时错误:
System.IO.FileNotFoundException was unhandled
HResult=-2147024770
Message=Could not load file or assembly {Wrapper} or one of its dependencies. The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)
调用Application中对Wrapper的引用看起来是正确的.Wrapper dll存在于正确的位置.
这个项目用于在别人的系统上构建和运行,我看过几次.该人/计算机不再可用.自上次成功构建和运行以来,某些依赖项的某些路径已发生更改,我已修复了与此相关的所有编译错误.
只是为了澄清我的项目结构:

Digraph G
{
App [ label = "My C# Application"]
Wrapper [ label = "C++/CLI Wrapper"]
Lib [ label = "C++ Library"]
Dll [ label = "My helper C# DLL"]
CDep [ label = "Series of deep C++ dependencies managed \n by CMake for Lib, hard coded relative paths for Wrapper."]
App->Wrapper->Lib->CDep;
App->Dll->Wrapper->CDep;
}
Run Code Online (Sandbox Code Playgroud)
Wrapper是围绕C++库的C++/CLI包装器.当我们尝试在Application中加载具有Wrapper的using语句的类时,会触发该错误.
Wrapper确实有很多依赖项,但错误消息并不表示哪个依赖项存在问题.这是一个庞大而复杂的系统,其中大部分由其他团队构建.C++组件使用CMake来使所有依赖项都正确,但CMake本身不支持C#.
我尝试使用fuslogvw来查找绑定错误,但在我更改设置以包含所有绑定之前,它绝对没有显示任何内容,然后它只显示成功的绑定. http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.100).aspx
路径很长,但不超过256个字符.
我在Dll的编译中发出警告(见上图):警告1正在构建的项目的处理器体系结构"MSIL"与参考"{cli_wrapper.dll}","AMD64"的处理器体系结构不匹配".这种不匹配可能会导致运行时故障.请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者依赖于具有与项目的目标处理器体系结构相匹配的处理器体系结构的引用.
在Configuration Manager中,Dll正在为"任何CPU"构建平台,而Wrapper正在为"x64"构建.我将dll更改为x64.我仍然得到运行时错误.
无法加载文件或程序集或其依赖项之一 执行干净,已删除的构建目录内容.没变.重新打开Visual Studio.没变.尝试更改要匹配的程序集名称,默认名称空间和项目名称.没变.
无法加载文件或程序集"xxx"或其依赖项之一.试图加载一个格式不正确的程序, 我相信我们必须编译为64位.我们依赖于64位C++库.
无法加载文件或程序集...参数不正确 我是本地管理员.
如何在.NET中启用程序集绑定失败日志记录(Fusion) 尝试了注册表设置,但它们似乎只是fuslogvw设置.可用日志数据没有改进.
许多其他类似问题有ASP或服务安装特定答案.
我发现了这个问题.我可以使用多个版本的库,我使用的是一个版本的包含文件和另一个版本的编译库.Dependancy Walker是找到哪个图书馆存在问题的关键,如果Aschratt发布了这个作为答案而不是作为评论,我会接受他的回答.
| 归档时间: |
|
| 查看次数: |
3847 次 |
| 最近记录: |