MFC一些error问题

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

错误 LNK2019:无法解析的外部的符号 _sscanf和_vsprintf

在使用Visual Studio 编译的时候可能会遇到 ERROR LNK2019:无法解析的外部的符号 _sscanf, _sscanf_s这样的函数,特别是使用Visual Studio2017时:

解决方法:
方法一:点击项目属性,弹出属性对话框后,打开链接器点击输入,在附加依赖项中添加legacy_stdio_definitions.lib 即可。

方法二:在报错的.cpp文件中的头文件下面加#parameter(lib,"legacy_stdio_definitions.lib ")
提示:由于很多时候我们难以找到具体出错的.cpp文件,所以方法一更好用

E1097: unknown attribute "no_init_all" in WinNT.h in Windows SDK 10.0.18362.0

在我使用最新(2019.5.12)的VS2019(版本号16.0.3)时,编译器弹出了如标题所示错误,找不到"no_init_all"attribute。错误源头在winnt.h这一系统头文件中。

只需要在winnt.h头文件中

#if (_MSC_VER >= 1915)

#pragma warning(disable:4845)   // __declspec(no_init_all) used but d1initall not set

#endif

(这一代码块是微软工程师用于在旧版本的VS中消除该错误提示的预编译头
虽然微软的工程师们宣称他们在最新的VS2019中已经修复了该错误,但是仍有很多人受到了该错误的困扰。)

这一预编译头之后加上

#if (_MSC_VER >= 1915)

#define no_init_all deprecated

#endif

“ACCESS_MASK“不明确的符号 问题解决

opencv的命名控件 系统库名称冲突;
解决方式:
去除所有的using namespace cv
然后以cv::替代

directshow 遇到的问题

具体是d3dx9.h D3DApp.h D3DFont.h qedit.h不能共存,出现一下错误: 
should not include d3dtypes.h when compiling for DX8 or newer interfaces 
D:\DXSDK\Include\d3drmobj.h(46) : warning C4005: 'WIN_TYPES' : macro redefinition 
        D:\DXSDK\Include\dxfile.h(48) : see previous definition of 'WIN_TYPES' 
D:\DXSDK\Include\d3drmobj.h(274) : error C2061: syntax error : identifier 'LPDIRECT3D' 
D:\DXSDK\Include\d3drmobj.h(299) : error C2061: syntax error : identifier 'LPDIRECT3DDEVICE' 
D:\DXSDK\Include\d3drmobj.h(314) : error C2061: syntax error : identifier 'LPDIRECT3D' 
D:\DXSDK\Include\d3drmobj.h(339) : error C2061: syntax error : identifier 'LPDIRECT3DDEVICE' 
D:\DXSDK\Include\d3drmobj.h(344) : error C2061: syntax error : identifier 'LPDIRECT3D2' 
D:\DXSDK\Include\d3drmobj.h(348) : error C2061: syntax error : identifier 'LPDIRECT3DDEVICE2' 
D:\DXSDK\Include\d3drmobj.h(363) : error C2061: syntax error : identifier 'LPDIRECT3D' 
D:\DXSDK\Include\d3drmobj.h(388) : error C2061: syntax error : identifier 'LPDIRECT3DDEVICE' 
D:\DXSDK\Include\d3drmobj.h(393) : error C2061: syntax error : identifier 'LPDIRECT3D2' 
D:\DXSDK\Include\d3drmobj.h(397) : error C2061: syntax error : identifier 'LPDIRECT3DDEVICE2' 
D:\DXSDK\Include\d3drmobj.h(454) : error C2061: syntax error : identifier 'LPDIRECT3DVIEWPORT' 
D:\DXSDK\Include\d3drmobj.h(500) : error C2061: syntax error : identifier 'LPDIRECT3DVIEWPORT' 
D:\DXSDK\Include\d3drm.h(74) : error C2061: syntax error : identifier 'LPDIRECT3D' 
D:\DXSDK\Include\d3drm.h(156) : error C2061: syntax error : identifier 'LPDIRECT3D2' 
D:\DXSDK\Include\d3drm.h(240) : error C2061: syntax error : identifier 'LPDIRECT3D2' j

解决方法:#define __D3DRM_H__

 在"stdafx.h"文件中,加上 #define __D3DRM_H__ 就好了

VS2019 错误 LNK2019:无法解析的外部的符号 _sscanf和_vsprintf(亲测可用) 今天编译公司项目的时候出现以下问题 阅读详情

相关推荐

错误 LNK2019:无法解析的外部的符号 _sscanf和_vsprintf

错误 LNK2019:无法解析的外部的符号 _sscanf或者_vsprintf 在使用Visual Studio 编译的时候可能会遇到 ERROR LNK2019:无法解析的外部的符号 _sscanf, _sscanf_s这样的函数,特别是使用Visual Studio2017时,经常出现,如下图所示。 解决方法: 方法一:点击项目–属性,弹出属性对话框后,打开“链接器”点击输入,在“附加依...

weixin_43307064的博客 2825

sprintf()使用说明

在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argum

Simple is perfect 5746

mfcsscanf函数的简单用法,找出字符串中部分字符串的子字符串

CString str1="console the write f  (100%) is the end"; CString strFind = _T("f  ("); CString strValue; int pos; pos=str1.Find(strFind ); strValue=str1.Mid(pos,6); const char *cc=(LPCTSTR)strVa

zhengliuguo的专栏 1893

MFC:配置项目属性解决的各种error问题

首先编译提示error C1010的错误 fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”? 上述问题定位在MemDB.c,解决方法是在解决方案管理器中查找&amp

dashumak的博客 2601

从“空项目”创建MFC项目遇到的问题error C1189,error MSB8031

在VS2013中创建了一个空项目,创建了MyApp.h, MyApp.cpp(MyApp.h使用了<afxwin.h>) build的时候报错: fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Pl...

weixin_30553065的博客 91

由于引用MFC库导致DllMain重复定义问题解决 error LNK2005

最近在做一个项目,有个工程叫COMMUtil(DLL工程).原本该项目中用的都是STL中的类。现在由于用了一个第三方的一个日志工具,里面用到了CString等MFC提供的类,所有要加上对MFC的引用。 将原本的使用Windows...

chitun9294的博客 446

MFC 常见问题 fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version)

回复于 2016-03-30 13:40:34 #6 得分:0fatal error 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]解决方法:项目,属...

whish1994的博客 2788

MFC问题:封装dll遇到的奇葩错误:error LNK2005: _DllMain@12 已经在 DLLMain.obj 中定义

创建的dll工程,在需要添加MFC文件时候,遇到问题error LNK2005: _DllMain@12 已经在 DLLMain.obj 中定义。

qq_41824162的博客 552

【00】MFC入门到精通——VS2022打开其他MFC项目报错,新版VS打开老版本VS的MFC项目报错,资源视图Dialog无法打开,error MSB8041: 此项目需要 MFC

本文介绍了在Visual Studio中编译MFC项目时遇到的常见错误及解决方法。主要问题包括缺少MFC库导致的资源视图加载失败和编译报错,针对VS2019和VS2022版本提供了具体解决方案:通过Visual Studio Installer安装对应版本的MFC组件(v142或v143生成工具)。对于旧版本项目(如VS2015),还需要额外安装兼容的早期版本生成工具。文章详细说明了安装步骤,并展示了成功修复后的效果图,帮助开发者快速解决MFC项目编译问题

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 2406

问题】解决找不到MFC42D.DLL及fatal error LNK1103: debugging information corrupt; recompile module

2009年09月15日 星期二 10:24       在平时基本上都是用DEBUG调试程序,但是提交作品的时候需要RELEASE版本,可是release老是在后续运行时出问题,于是在别的电脑上运行DEBUG版本,出现了找不到MFC42D.DLL,然后接着找不到MSVCRTD.DLL->MFCD42D.DLL->MFCO42D.DLL。【错误】:“没有找到MFC42D.

duanjingneuq的专栏 3323

【33】MFC入门到精通——VS打开MFC项目,error MSB8041: 此项目需要 MFC 库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们

编译项目时出现"error MSB8041:需要MFC库"错误,可通过安装对应MFC组件解决。具体方法:1)打开Visual Studio Installer;2)在"单个组件"选项卡中勾选对应版本的MFC库(VS2019选v142,VS2022选v143);3)点击"修改"完成安装。也可通过VS菜单"工具-"获取工具和功能";进入安装界面。安装完成后即可正常编译运行MFC项目。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 854

VC 6.0 “fatal error LNK1104: cannot open file "mfc42u.lib"”问题解决

在公司运行成功的示例代码,放到自己电脑VC 6.0中编译,竟然得到了一个fatal error LNK1104: cannot open file "mfc42u.lib"错误。于是在网上搜索了一下,问题是默认的VC缺少对Unicode的支持,而这个代码恰恰就是按照Unicode发布,要使用Unicode编译。解决方案很简单,从VC的安装盘中“盘符/VC98/MFC/LIB”拷贝文件“MFC42U

Gary's Blog --- A C++ programmer 4929

Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version 问题解决

在VS 2010中编译程序时出现错误: fatal error 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] 解决方案: 项目右键,依次选

野草志 3918

error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::

解决方法: 添加头文件 #include

S20091103372的专栏 3898

MFC怪异的问题error C2653: “CMyDialog”: 不是类或命名空间名称

我想应该是没有包含类头文件,检查后发现正确的包含了头文件。在自定义一个新的DIalog类后,编译发现自定义类的cpp文件报错。另外对于windows.h的头文件貌似也有包含顺序的问题MFC对于头文件的包含顺序会有这种怪异的错误。在cpp文件中,它包含的头文件是。就可以正常的编译通过。

m0_60352504的博客 806

LINK : fatal error LNK1104: 无法打开文件“mfc71.lib”的问题

[环境]   Windows XP OS;   Visual Studio 2008;   本来是vs2003开发的工程,迁移至vs2008后出错。 [分析]    mfc71.lib是vs2003所使用的MFC类库;虽然我的机器中同时安装有vs2003和2008两个版本,不过由于我的vs2008的类库查找PATH中找不到mfc71.lib而报的错。更进一步地说,vs2008

Douminjun的博客 1083

MFC 错误 error LNK2019: 无法解析的外部符号 __imp_SetupDiDestroyDeviceInfoList

qq_42095701的博客 1773
上一篇: MFC类型转换
下一篇: QT connect用法
JamieLe
博客等级 码龄10年 3粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值