gpt4 book ai didi

c++ - Cpp Pantheios 日志库,调试断言失败错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:02 25 4
gpt4 key购买 nike

我有一个 cpp 项目、一个 cpp cli 项目和一个 c# win 表单项目。我在我的 cpp native 项目中使用 pantheios 日志库。当我尝试写日志时,出现此错误:

Log Error

这是我的代码:

日志.hpp

#ifndef INCLUDE_LOG_HPP
#define INCLUDE_LOG_HPP


#define PANTHEIOS_NO_INCLUDE_OS_AND_3PTYLIB_STRING_ACCESS // Faster compilation

/* Pantheios Header Files */
#include <pantheios/pantheios.hpp> // Pantheios C++ main header
#include <pantheios/inserters/args.hpp> // for pantheios::args

#include <pantheios/backends/bec.file.h> // be.file header

#include "Include/utility.hpp"
/* Standard C/C++ Header Files */
#include <exception> // for std::exception
#include <new> // for std::bad_alloc
#include <string> // for std::string
#include <stdlib.h>
#include <sstream>

#define PSTR(x) PANTHEIOS_LITERAL_STRING(x)


namespace Mtx
{
namespace log
{
class MTXMANAGER Logger
{
public:
void WriteLogIn(const std::string & log_text);
Logger();
~Logger();
};
}
}
#endif

日志.cpp

#include "Log.hpp"
namespace Mtx
{
namespace log
{
PANTHEIOS_EXTERN_C const PAN_CHAR_T PANTHEIOS_FE_PROCESS_IDENTITY[] = PANTHEIOS_LITERAL_STRING("mtx");//
Logger::Logger()
{
char path[MAX_PATH];
GetModuleFileName( NULL, path, MAX_PATH );

std::string::size_type pos = std::string( path ).find_last_of( "\\" );
strcpy(path,std::string( path ).substr( 0, pos).c_str());
std::strcat (path,"\\mtx-%D__.log");
/////

pantheios_be_file_setFilePath(PSTR(path), PANTHEIOS_BE_FILE_F_TRUNCATE, PANTHEIOS_BE_FILE_F_SHARE_ON_WINDOWS, PANTHEIOS_BEID_ALL);

}

Logger::~Logger()
{

}

void Logger::WriteLogIn(const std::string & log_text)
{
pantheios::log_INFORMATIONAL(PSTR(" [1] "),PSTR(log_text));
}

}
}

我在这一行发现了错误:

pantheios::log_INFORMATIONAL(PSTR("   [1]   "),PSTR(log_text));

我该如何修复这个错误?

最佳答案

恐怕我没有直接的答案给你,但比较我在我的解决方案中的内容(这在很多方面与你的设置相似 - .NET DLL 调用 C++-native DLL,它有 Pantheios-记录),这是我所拥有的:

  • 我有一个项目日志,它有一个 InitInstance() 和 ExitInstance()(以及 CWinApp 派生类的构造函数 - CLogApp)
  • CLogApp ctor/dtor 为空
  • InitInstance() 和 ExitInstance() 中的代码:

    BOOL CLogApp::InitInstance()
    {
    CWinApp::InitInstance();

    int panres = pantheios::pantheios_init();

    if( panres < 0 )
    {
    OutputDebugStringA("Could not initialise the Pantheios logging libraries!\n");
    util::onBailOut(pantheios::emergency, "Failed to initialise the Pantheios libraries", PANTHEIOS_FE_PROCESS_IDENTITY, /*pantheios::*/pantheios_getInitCodeString(panres));

    return FALSE;
    }
    else
    {
    pantheios_be_file_setFilePath(CErrorHandler::getLogPath().c_str(), PANTHEIOS_BE_FILE_F_TRUNCATE, PANTHEIOS_BE_FILE_F_TRUNCATE, PANTHEIOS_BEID_LOCAL);

    PANTHEIOS_TRACE_NOTICE("STARTING LOGGING");
    }

    return TRUE;
    }

    int CLogApp::ExitInstance()
    {
    PANTHEIOS_TRACE_NOTICE("STOPPING LOGGING");
    pantheios_uninit();
    return 0;
    }

我不确定这是否有帮助,但这段代码已经为我工作多年了。

关于c++ - Cpp Pantheios 日志库,调试断言失败错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9664626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com