Visual Studio创建x64 DLL并在C#控制台应用中引用报错如何解决
问题原因排查及解决方案
1. DLL项目类型不匹配
如果你创建的是C++原生x64 DLL,属于非托管程序集,Visual Studio的「添加项目引用」功能默认仅支持托管程序集(.NET 框架/.NET 等生成的托管 DLL)、COM 组件、同解决方案内的兼容托管项目,直接选中原生 x64 DLL 文件就会报不支持的错误。
之前 x86 能正常引用大概率是你当时做了额外配置(比如提前注册了 COM 互操作、或者 DLL 实际是托管类型),切换 x64 后对应配置没有同步更新。
注意:如果是 C++ 原生 DLL,不需要通过「添加项目引用」的方式引入,改用
[DllImport]特性动态调用即可。
2. 托管 DLL 框架版本不兼容
如果你的 DLL 是托管类型(C#/VB.NET 编写),检查两个项目的目标框架版本:
- 控制台应用如果是 .NET Core/.NET 5+,DLL 项目如果是 .NET Framework,部分版本跨框架引用会触发 x64 架构下的兼容性校验报错
- 反之 .NET Framework 项目引用高版本 .NET 编译的 x64 托管 DLL 也会出现该问题
解决方法是将两个项目的目标框架调整为兼容版本,优先保持版本完全一致。
3. DLL 编译输出架构实际不匹配
检查 DLL 项目的配置管理器设置:
- 确认 DLL 项目的「平台」列确实选中了 x64,而非 Any CPU 或 x86
- 确认 DLL 项目的「生成」列已勾选,输出路径下的 DLL 确实是 x64 架构,可以用
dumpbin /headers 你的DLL路径命令校验,输出结果中FILE HEADER VALUES下如果出现8664 machine (x64)才是正确的 x64 编译产物。
4. 项目引用缓存损坏
Visual Studio 的项目引用缓存异常也会导致正常的 DLL 无法识别,按以下步骤清理:
- 关闭 VS,删除解决方案目录下的
.vs隐藏文件夹 - 分别删除 DLL 项目和控制台项目的
bin、obj文件夹 - 重新打开 VS,先编译 x64 DLL 项目,再给控制台项目添加引用。
内容的提问来源于stack exchange,提问作者user3329035
相关产品推荐
相关产品推荐

