解决导出的MFC扩展动态库在调用时出现Debug Assertion Failed错误的问题

控制台应用程序中调用CFileException 的GetErrorMessage方法时出现“Debug Assertion Failed”错误时的解决办法 这两天帮测试一位同事写的一个从dat文件中读取数据的方法,该方法中打开文件的代码大致如下:   CStdioFile file;    //文件流 CFileException fileException;  //文件异常类   if (file.Open(strFileName, CFile::modeRead, &fileException) == 0)  {   char cBuf[255] 阅读详情

导出一个从CView继承的类MapView,新建一个单文档工程,将里面视图类的基类改为MapView类,debug模式下运行出现如下错误(导出MapView类的动态库是Release版本),点击忽略系统可正常运行,将导出MapView类的动态库编译为Debug版本,系统正常运行,debug模式下系统正常运行但是release模式下会出问题。


原来导出动态库的方式如下:

#ifndef _BLUEMAP_MAPVIEW_

#define BLUEMAP_MAPVIEW _declspec(dllimport)

#else

#define BLUEMAP_MAPVIEW _declspec(dllexport)

#endif

class BLUEMAP_MAPVIEW MapView : public CView

{

     DECLARE_DYNCREATE(MapView)

…………………………………………….动态库代码段

};

#ifndef _BLUEMAP_MAPVIEW_

#ifdef _DEBUG

#pragma comment(lib, "MapView.lib")

#pragma message("debug模式下自动链接MapView.lib")

#else

#pragma comment(lib, "MapView.lib")

#pragma message("非debug模式下自动链接MapView.lib")

#endif

#endif

解决方案:

第一步:将MapView在Debug和Release模式下以不同的动态库方式导出

动态库头文件如下:

#ifndef _BLUEMAP_MAPVIEW_

#define BLUEMAP_MAPVIEW _declspec(dllimport)

#else

#define BLUEMAP_MAPVIEW _declspec(dllexport)

#endif

class BLUEMAP_MAPVIEW MapView : public CView

{

     DECLARE_DYNCREATE(MapView)

……………………………………………………动态库代码段

};

#ifndef _BLUEMAP_MAPVIEW_

#ifdef _DEBUG

#pragma comment(lib, "DebugMapView.lib")

#pragma message("debug模式下自动链接DebugMapView.lib")

#else

#pragma comment(lib, "ReleaseMapView.lib")

#pragma message("非debug模式下自动链接ReleaseMapView.lib")

#endif

#endif

以上红色代码使程序在装载动态库时根据当前的编译环境(debug环境或release环境)装入适用不同类型的动态库。

第二步:设置导出动态库的名称

点击动态库工程属性分别设置debug版和release版动态库名称。

设置debug版动态库名称为DebugMapView.dll


设置Release版动态库名称为ReleaseMapView.dll

第三步:编译生成不同版本的动态库文件。

编译为debug版

双击工程的***.def文件

将LIBRARY 后面的文件名改为 DebugeMapView,编译生成动态库文件



编译为Release版

同样的方法,将LIBRARY 后面的文件名改为ReleaseMapView并编译生成动态库文件。



注:为了避免在切换编译模式时不断修改***.def文件,可以再新建一个不同名称的***.def文件并修改工程属性,将Modul Definition file改为合适的*.def文件,这样就不需要每次都修改*.def中的内容了。



接下来再运行前面的单文档工程发现无论是debug模式下或release模式下系统都能正常运行。

 个人感觉这是一种不得已的方法,欢迎高手提出更好的方案。

 

Debug Assertion Failed!……File:winocc.cpp Line:345……(Press Retry to debug the application) MFC AppWizard(exe)编程 系统环境:MS Windows XP Home Edition vertion 2002 Service Pack2 编译环境:VC6.0  问题描述:    编译、组建通过,    运行后,测试多数功能可以实现,    在进行 SJCX项 功能测试时,OS弹出报错对话框(可见贴图于相册一02),       阅读详情

相关推荐

MFC开发报错:Debug Assertion Failed...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1431

MFC Debug Assertion Failed错误

对于这种错误,一般是窗体未加载完成

m0_60352504的博客 1217

mfc120u.dll mfc120ud msvcr120 msvcr120d(x64)

这个是x6版本的...要x86版本的点我资源下载

错误:Debug assertion failed

错误:Debug assertion failed 一、出现这种情况很可能是使用了野指针,比如某个指针指向一个局部变量,而在该变量作用域外使用该指针引用了该对象。二、按F5运行你的程序 ;在出错时,选择“重试” ;3、按ALT+7调出“调用栈”窗口 ;、双击从上往下的最近一个自己定义的函数,系统会自动把该函数所在的文件显示出来,此时程序就暂停在光标处。一般来说错误就出在这附近。你可以通过查看变量的值

qq_33870933的博客 2499

从‘包饺子’到‘包络线’:一个生活化比喻讲透长期与短期成本决策

本文通过饺子馆经营的生活化比喻,深入浅出地解析了长期与短期成本决策的核心逻辑。从调整人力(可变成本)到扩建厨房(固定成本),揭示了包络线理论在商业决策中的实际应用,帮助企业主在规模经济与成本控制间找到平衡点。

weixin_32006655的博客 340

Claude Code 完整学习笔记

Claude Code 学习笔记摘要 Claude Code是Anthropic推出的智能编码工具,基于Claude Opus 4.5模型构建,提供跨平台支持(终端/VS Code/JetBrains/Web等)。核心功能包括: 代码库理解与多文件编辑 命令执行与开发工具集成 智能体协作开发流程 安装要求Node.js≥18,提供原生/Homebrew/npm等多种安装方式,支持环境变量配置API访问。基础交互模式包括会话管理、文件操作和代码审查等功能,可自动读写文件并执行精确修改。 (149字)

虚心若愚 812

MFC程序中出现”debug assertion failed”的解决办法

如上图所示,在对话框中添加了一个ListBox控件,目的是在对话框启动的时候,自动对指定的文件夹中的CSV文件进行遍历,然后把所有的CSV文件的目录逐个添加到ListBox中。但是在程序执行到CSelectDataDlg::FindCsvFile()函数中的 m_listbox.AddString(CString(strtemp)); //为listBox控件添加数据 代码时,出现上述错误。 相关知识准备及解决方法: 对话框程序中的OnInitDialog()函数: 在创建对话框...

8031

Imputation Methods for scRNA Sequencing Data

越来越多的研究者使用单细胞RNA测序(scRNA-seq)技术来表征单细胞水平的转录图谱。他们用它来研究复杂组织的异质性、转录组动力学和未知生物的多样性。然而,在基因表达模式随机性的scRNA-seq数据中普遍存在许多技术和生物学上的噪音。这些数据通常具有高维、稀疏和大量“dropout”值的特点,并且受批处理效应的影响。scRNA-seq数据中大量的“dropout”值严重掩盖了基因之间的重要关系,阻碍了下游分析。因此,scRNA-seq数据dropout值的估算就显得尤为重要。

qq_34179307的博客 542

关于#ifdef _DEBUG失效问题

关于#ifdef _DEBUG失效问题前言现象显示问题解决 前言 今天跟进项目遇到了一个问题。 问题描述:调用动态库dll库函数时,动态库API函数不能正常进行跟进。 现象显示 (1)异常图示一: 而正常图示二为: 问题描述: 正常的“#define new DEBUG_NEW”是一直都是灰色显示,而本次发生错误时,无论是release模式还是debug模式,“#define new DEB...

qq_34462436的博客 1927

反激开关电源变压器设计实例讲解(定明芳)

内容来自《反激变压器的设计》(定明芳主讲)。 定名芳老师主要讲了10步,最后应该还有一步,线径的选择已经绕制方式。这里进行了记录整理,把一些公式来源进行了推导。所有的设计都是基于理论计算。 1.确定电源规格 2.确定工作频率和最大占空比 3.计算匝比(利用伏秒平衡原则) 此处插入解释一下伏秒平衡,根源是磁通量平衡。该原则可以用来检查MOS管耐压是否够。 4.计算初级线圈峰值电流 基于CCM模式计算的。ip1是开关管要关闭时的峰值电流,ip2是开关管开始导通时的起始电流。因为时CCM模式,所以,ip

ydgd118的博客 5万+

Comsol单层焊缝焊接数值模拟:温度场与应力场全流程解析

在工程制造领域,有限元模拟是研究焊接热-力行为、优化工艺参数的重要工具。焊接过程涉及强烈的局部加热和快速冷却,材料经历复杂的非线性和相变,必须通过瞬态分析和热-力顺序耦合,才能准确捕捉移动热源作用下的温度演化与应力塑性积累。这一技术广泛应用于压力容器、船舶结构、车辆制造等场景,用以预测残余应力与变形、评估冷裂纹风险,并为工艺设计提供定量支撑。焊接数值模拟能否真正指导实践,关键在于热源校核、随温度变化的材料参数、合理的边界条件与网格策略。单层焊缝作为焊接模拟的基础模型,涵盖了移动热源加载、熔池形成、高温软化与

weixin_30444111的博客 222

MFC学习笔记之VC++ Debug Assertion Failed 错误(File: strex.cpp Line: 690)

转载:VC++DebugAssertionFailed!错误(File:strex.cppLine:690)_希热明玛_新浪博客 问题(File: strex.cpp Line: 690): 错误描述:在Debug模式下报错,Release模式下正常。 --------------------------- Microsoft Visual C++ Debug Library --------------------------- Debug Assertion Failed! Progra...

汉尼拔勇闯天涯 4735

动态欧拉角与静态欧拉角:从理论到实践的深度解析

本文深度解析了动态欧拉角与静态欧拉角的核心区别与应用场景。静态欧拉角基于固定世界坐标系,适用于全局导航与三维场景编辑;而动态欧拉角基于物体自身坐标系,更符合飞行模拟、机器人控制等直觉操作,但需警惕其固有的万向节死锁问题。文章通过理论结合实战,帮助开发者在机器人、无人机及图形学项目中正确选用与处理旋转表示。

java5的博客 1074

ActiveX Debug Assertion Failed

新建的 ActiveX 控件工程,就算什么代码都不写进去,在连接时也会出现这样的问题;忽略断言错误继续下去,在Debug下生成了 .ocx文件,直接在运行对话框里输入: regsvr32 D:\ActiveX\debug\XXX.ocx (路径对的)也会出现同样的断言错误,不能注册;根据断言提示的错误去查找相关的错误 发现是红色部分的断言: void CCmdTarget::EnableType

小_鱼的专栏 1147

Full Range && Limit Range

Full Range && Limit Range1 Full range和Limit Range定义2 为什么会需要Limit Range3 用Full range去显示limit Range图片4 YUV转RGB5 额外 1 Full range和Limit Range定义 我们知道,对于RGB和YUV的色彩空间来说,有个位深(bit-depth)的概念;位深是指记录图像每个像素的色彩通道时所使用的bit数,常见的RGB888,YUV420-8bit。以RGB888为例,其代表R G B

zjhcj1的博客 1万+

Python 爬虫实战:豆瓣电影海报批量获取(Top250 榜单 + 可视化展示)

在信息爆炸的时代,数据已成为决策的核心,而数据的获取是数据分析的第一步。本文将详细介绍如何利用 Python 爬虫获取豆瓣电影 Top250 榜单的海报,并对数据进行可视化展示,助你更好地了解电影市场的趋势和用户的喜好。

yansideyucsdn的博客 718

C++出现debug assertion failed

晚上调试MFC程序出现debug assertion failed的错误,到网上看了别人的解决方案,在这里先备着,具体原理不详。 解决方法: VC++6.0 "Project" -> settings -> C/C++ -> Category选项中选择Preprocessor -> 在Undefined symbols中填写_DEBUG,重新编译运行即可

res_cue的专栏 2590

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

debug assertion failed

BOOL CTestpage0::OnInitDialog() { //     m_modeset.ResetContent(); //     m_modeset.AddString("停止运行"); //     m_modeset.AddString("位置模式"); //     m_modeset.AddString("速度模式"); //     m_modeset.Ad

xiaolongrenstep的博客 465

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

串口通讯中运行exe文件出现c++ occcont.cpp line 925运行错误 Debug Assertion Failed解决方案

串口通讯中运行exe文件出现c++ occcont.cpp line 925运行错误 Debug Assertion Failed解决方案 【下载地址】串口通讯中运行exe文件出现cocccont.cppline925运行错误DebugAssertionFailed解决方案分享 在基于MFC的串口通讯开发中,有时会遇到运...

gitblog_06524的博客 731

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VC MFC OCX控件 Debug Assertion Failed!

OCX控件程序(使用debug中的ocx),在别人电脑上编译都是正确的,在我的电脑上编译就会出现“Debug  Assertion  Failed!”的错误, Debug  Assertion  Failed! Program:D:\Windows\system32\regsvr32.exe File:oletyplb.cpp Line:32 具体如下图: 开始怀疑程序的问题,但是

woshisadshiwo的专栏 4929

mfc扩展dll的调用以及dll中creat出错分析

一、exe中按钮相应dll调用        typedef void (*lpFun)(void);         HINSTANCE exe_hInstance=GetModuleHandle(NULL);   //获取exe资源 HINSTANCE dll_hInstance=LoadLibrary("ScheduleSystem.dll");//加载dll if (NULL=

angellove156的专栏 2114

MFC 资源控件报错debug assertion failed

1.我是创建了一个动态编辑框,按回车确认输入之后,销毁编辑框时遇到了这个问题。3.单击转移焦点调用EndEdit函数都没这个问题,以下是焦点转移的调用。4.当前的解决办法,把EndEditing里面销毁改成隐藏,暂时没问题了。2.编译没报错,编辑完编辑框内容之后按回车,就报这个错。没招了,到现在不知道为啥。

qq_52519921的博客 302

Debug Assertion Failed

删除控件造成Debug Assertion Failed问题 ,其实不是删除控件造成的,而是整个程序的逻辑顺序有错误。通过检查程序的逻辑顺序调试程序,就能解决

snwang_miss的博客 1354

vc6.0 中Debug assertion failed的错误解决

刚刚在编译mfc工程时,编译正常,但是运行出错,如下图: 注意上面的提示信息: File:fscanf.f Line:54 这是我工程中用到了fcanf函数出错,于是我找到了,我的项目对应代码:  FILE* fpara=fopen("C:\\opt\\class.txt","r"); 发现我的C:\\opt\\classification_para.txt这个文件不存在。这是个打

popstars5207的专栏 4611
下一篇: 用VS2005的Setup Project制作应用程序安装包
BlueMap
博客等级 码龄17年 114粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值