C# 正在构建的项目的处理器体系结构不匹配”;MSIL“;以及参考文件中的处理器体系结构;AMD64
我有一个Visual Studio 2012.Net主项目,其构建属性中指定了平台目标x86。该项目由多个C++项目和C项目组成。在我的配置管理器中,C语言项目的平台是任何CPU,而C++项目是Win32。我想引用一个第三方dll,它是针对AMD64的。添加引用时,我得到以下警告: 警告:警告:处理器之间存在不匹配 正在构建的项目“MSIL”和处理器的体系结构 参考“DALSA,processorArchitecture=AMD64”的体系结构, “AMD64”。这种不匹配可能会导致运行时失败。请考虑 通过更改项目的目标处理器体系结构 配置管理器,以便调整处理器架构 在项目和引用之间,或者依赖于 使用与目标应用程序匹配的处理器体系结构进行引用 项目的处理器架构 如果我试图更改平台目标x64的主C#项目构建,它会抱怨,因为它所依赖的外部DLL具有平台目标x86C# 正在构建的项目的处理器体系结构不匹配”;MSIL“;以及参考文件中的处理器体系结构;AMD64,c#,c++,.net,visual-studio-2012,architecture,C#,C++,.net,Visual Studio 2012,Architecture,我有一个Visual Studio 2012.Net主项目,其构建属性中指定了平台目标x86。该项目由多个C++项目和C项目组成。在我的配置管理器中,C语言项目的平台是任何CPU,而C++项目是Win32。我想引用一个第三方dll,它是针对AMD64的。添加引用时,我得到以下警告: 警告:警告:处理器之间存在不匹配 正在构建的项目“MSIL”和处理器的体系结构 参考“DALSA,processorArchitecture=AMD64”的体系结构, “AMD64”。这种不匹配可能会导致运行时失败。
你知道我在干什么吗?所以你有两只左脚鞋,没有一只右脚鞋。如果你想走路,你应该找一双合适的鞋。获取x86 DALSA或Win64外部DLL 单个进程不可能在不同的体系结构上运行
唯一的另一种选择是创建一个辅助进程,主进程将通过类似管道的方式连接到该辅助进程,该辅助进程将在互补的体系结构上运行。或者用COM对象包装DLL。当然,这是一个适当的警告。创建该DLL的程序员明确表示,它只能在64位进程中工作。但您正在显式创建一个32位可执行文件。如果构建系统不向您发出警告,那将是一个错误。也许那个程序员错了,.NET相当宽容。证据在布丁里,它跑了吗?如果不是,那当然不是。