
不完全是「少几个 dll」这么简单,实际是 编译环境 + 运行库 + 清单(manifest)+ 工程配置 几层问题叠在一起。
1. 编译层(不是 dll)
| 问题 | 现象 |
|---|---|
| 未装 MFC | MSB8041、afxwin.h 找不到 |
| 工具集 | 工程原是 v143,已改为 Community 的 v145 |
这一层和 dll 无关,是 VS 组件和工具链 没配好。
2. 运行层(不只有 dll)
Output 里其实早就有 MetaCore.dll、mfc140.dll、msvcr90.dll 等,但仍然 0xc0150002。
真正缺的是 Side-by-Side 清单文件(不是 dll):
Microsoft.VC90.CRT.manifest
Microsoft.VC90.MFC.manifest
MetaCore.dll 用 VC90 编译,Windows 要靠这两个 manifest 才能正确加载 msvcr90.dll / msvcp90.dll。
只有 dll、没有 manifest,就会报 0xc0150002------看起来像 dll 问题,本质是 SxS 配置不完整。
3. 工程/配置层(也容易踩坑)
| 问题 | 后果 |
|---|---|
PostBuild 用了空的 VCToolsRedistDir |
VC145 运行库没拷进 Output |
Debug / Release 共用一个 Output\ |
互相覆盖 exe,混用 mfc140.dll / mfc140d.dll |
| 从 VS 按 F5(Debug) | 需要 mfc140d.dll、ucrtbased.dll 等 debug 库 |
| 只拷 exe、不拷整个目录 | 缺 MTK dll、manifest、ini |
总结
markdown
编译不过 → 缺 MFC 组件(VS 安装问题)
启动报错 → 不全是缺 dll
→ 关键是 VC90 manifest + 完整 Output 目录
→ 外加 Debug/Release 别混用
工厂使用建议:
- 配置:Release | Win32
- 运行:整个
Output\目录(exe + dll + manifest + ini) - 启动方式:Ctrl+F5 或直接双击
Output\SN_Writer.exe
这些已写进工程的 PostBuild,以后 Release 重新编译 会自动带上 manifest 和运行库。若你还遇到具体报错,把是 F5 还是 Release、从哪个目录启动发我即可。