C++build报错 - C1189

本文解决了一个常见的MFC应用程序编译问题,即错误C1189,当使用/MD[d]编译选项时,需要确保MFC共享DLL版本正确配置。通过将C/C++代码生成的运行库选项从多线程调试DLL改为多线程调试,成功解决了编译错误。

报错信息:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C1189 #error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] HikDoorMngBase G:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.22.27905\atlmfc\include\afx.h 24

 
2789632-7803caf34449705a.png
 

 

解决方案:参考https://blog.youkuaiyun.com/wgf5845201314/article/details/78405824

修改C/C++——》代码生成——》运行库改为多线程调试(/MTd)

### STM32 编译错误解决方案 当遇到与GNU工具链相关的编译错误时,通常可以从以下几个方面排查和解决问题。 #### 1. 环境配置验证 确保已正确安装并配置了`arm-none-eabi-gcc`交叉编译器。可以通过命令输入 `arm-none-eabi-gcc -v` 来检验是否能够正常调用该编译器[^3]。如果此命令返回详细的版本信息,则说明环境变量设置无误;反之则需重新检查路径添加情况。 #### 2. Make 工具校验 对于Windows平台而言,默认情况下MinGW-w64提供的Make工具名为`mingw32-make.exe`而非简单的`make.exe`。为了简化操作流程以及兼容Linux风格的工作流,建议将前者复制一份副本,并重命名为后者的形式保存在同一目录下[^2]。之后再尝试通过VSCode中的tasks.json文件来触发构建过程: ```json { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "make", // 或者使用 "mingw32-make" ... } ] } ``` #### 3. 配置文件调整 有时即使上述两项都已完成,仍然会遭遇诸如`process_begin: CreateProcess failed`这样的异常提示。这可能是由于项目根目录缺少必要的Makefile或是其内部定义存在问题所引起的。此时应当借助于专门的插件辅助创建标准格式的Makefile文档,比如“create makefile”扩展就能很好地满足这一需求[^5]。 另外还需确认`.vscode/settings.json`里关于C/C++ IntelliSense模式下的includePath参数是否涵盖了所有依赖库的位置声明,例如: ```json { "configurations": [ { "name": "Win32", "includePath": ["${workspaceFolder}/**", "${env.HOME}/STM32Cube_FW_F4_V1.24.0/Drivers/*"], ... } ], ... } ``` 以上措施有助于提高代码解析准确性的同时也减少了潜在冲突的可能性。 #### 4. 插件功能启用 最后不要忘记激活那些能增强IDE体验的功能模块,特别是针对嵌入式开发场景设计的一些实用组件,如: - **Cortex Debug**: 支持多种硬件仿真设备连接; - **ARM Assembly Support**: 提供对汇编指令的良好编辑支持; - **Chinese (Simplified) Language Pack for Visual Studio Code & Comment Translate**: 方便中文使用者理解和维护源码注释内容。 这些都将间接促进整个项目的顺利推进。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值