我有一个托管的C++ dll,我正在从一个C#项目中引用它。该C#项目将被编译为AnyCPU。是否有办法编译32位和64位版本的托管C++ dll,然后在运行时告诉C#项目加载正确的版本,取决于它正在运行的架构?
我有一个托管的C++ dll,我正在从一个C#项目中引用它。该C#项目将被编译为AnyCPU。是否有办法编译32位和64位版本的托管C++ dll,然后在运行时告诉C#项目加载正确的版本,取决于它正在运行的架构?
System.AppDomain.CurrentDomain.AssemblyResolve += Resolver;
事件处理程序看起来像这样:
System.Reflection.Assembly Resolver(object sender, System.ResolveEventArgs args)
{
string assembly_dll = new AssemblyName(args.Name).Name + ".dll";
string assembly_directory = "Parent directory of the C++ dlls";
Assembly assembly = null;
if(Environment.Is64BitProcess)
{
assembly = Assembly.LoadFrom(assembly_directory + @"\x64\" + assembly_dll);
}
else
{
assembly = Assembly.LoadFrom(assembly_directory + @"\x86\" + assembly_dll);
}
return assembly;
}