C#编译时可以选择AnyCPU架构,但需要调用dll时,dll是区分32位和64位的,调用错误将导致程序崩溃。
[DllImport(MyLibName, CallingConvention = CallingConvention.Cdecl)]方法中MyLibName参数只能是常量,无法在运行时修改,C#也没有区分32位和64位系统的宏定义。
可以把32位dll放到工程目录"Libs\x86"文件夹下,64位的dll放到工程目录"Libs\x64"文件夹下,在工程属性的生成事件中,添加命令: xcopy /s /y /f /c $(ProjectDir)Libs\*.* $(TargetDir)
在代码中调用SetDllDirectory函数设置dll目录
运行程序,可以自动选择对应架构的dll了。