Visual Studio C++:调试Assert失败

r55awzrz  于 2023-03-25  发布在  其他
关注(0)|答案(2)|浏览(268)

我最近试图创建一个程序,可以读取ODBC数据库,然后通过使用C类将条目写入Excel文件,该程序完美地编译,但问题出现在执行中...
第一个错误:
调试Assert失败!
程序:C:\Windows\system32\mfc140ud.dll
文件:f:\dd\vctools\vc7libs\ship\atlmfc\include\afxwin1.inl
电话:+86 -24 - 2222222
第二个错误:
调试Assert失败!
程序:C:\Windows\system32\mfc140ud.dll
文件:f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dbcore.cpp
3312线
这两个错误指向mfc140ud.dll文件,它不是丢失的文件,所以这不是问题所在。
下面是引发异常的函数:

void parseDB(CRecordset &rs, const CString &SqlString, CString strOut) {

std::cout << "test2";

rs.Open(CRecordset::snapshot, SqlString, CRecordset::readOnly);
std::string entry;
std::fstream file;

std::cout << "test3";

while(!rs.IsEOF()) {

    std::cout << "test4";
    rs.GetFieldValue((short)0, strOut);
    CT2CA pszConvertedAnsiString = strOut; 
    entry = pszConvertedAnsiString;

    writeXLSX(entry.c_str(), file);

    rs.MoveNext();

}

rs.Close();

}

“std::cout〈〈“test””是用来调试的,我的程序在“test 2”显示后立即生成这些错误,所以我推断错误来自“Open”行。
这是我初始化C的方式:

CString sDsn;
CDatabase db;
CRecordset rs(&db);
CString strOut;
CString SqlString;

然后,我在switch-case中使用CALL SQL函数:

switch (sequence) {
        case 1:
            SqlString = "CALL GETCUSNAME(AGENTS)";
            break;
        case 2:
            SqlString = "CALL GETCUSNAME(CLIENT)";
            break;
        default:
            AfxMessageBox(_T("Wrong entry!"));
        }

我搜索了很多网站,我找不到答案,这就是为什么我在这里问一个问题,提前感谢。

bwntbbo3

bwntbbo31#

第一个Assert来自AfxGetResourceHandle,它抱怨没有正确设置。
这通常会发生,因为您没有在应用程序开始时调用AfxWinInit(如果您有一个控制台应用程序,并且没有使用MFC向导设置它,则很可能是这种情况),或者您正在编写从非MFC代码调用的MFC DLL,并且您没有在每个外部可见函数的开始处添加AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
我相信第二个原因是MFC要求你用花括号 Package CALL查询,就像这样:{CALL GETCUSNAME(AGENTS)}。否则,调用将无法识别,代码执行将进入不应该采用的路径。

bis0qfac

bis0qfac2#

我有一个类似的错误,我发现这只发生在调试版本,因为我是建立一个插件的某些桌面软件,我呼吁我的MFC对话框内这个软件.然而,问题是,这个软件是使用释放MFC库(MFC140u.dll),而我的对话调试版本正在使用(MFC140ud.dll文件),我试着把(MFC140ud.dll)文件在我的项目文件和点vs和软件来加载它。螺母没有工作。我的解决方案是在包含MFC头文件之前,添加一个条件编译预处理器片段来取消DEBUG的定义。如果之前在我的预编译头文件中定义了DEBUG,则重新定义DEBUG。

#pragma once

#ifndef PCH_H
#define PCH_H

#ifdef _DEBUG
#define _DEBUG_WAS_DEFINED
#undef _DEBUG
#define NDEBUG
#endif

// -- Windows and MFC Inclusions --

#include "afxwin.h"
#include "afx.h"
#include "framework.h"
#include <Windows.h>

// -- Project Inclusions --
#include <xxxxx.h>

#if defined(_AFXEXT) && defined(__cplusplus)
#include <afxcoll.h>
#endif
#endif //PCH_H

相关问题