首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cpp Pantheios日志库,调试断言失败错误

Cpp Pantheios日志库,调试断言失败错误
EN

Stack Overflow用户
提问于 2012-03-12 17:37:23
回答 1查看 371关注 0票数 2

我有一个cpp项目,一个cli项目和一个c# win forms项目。我在cpp原生项目中使用pantheios日志库。当我尝试写日志时,我会遇到这样的错误:

下面是我的代码:

Log.hpp

代码语言:javascript
复制
#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

Log.cpp

代码语言:javascript
复制
#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));
        }  

    }
}

我把错误放在下面这一行:

代码语言:javascript
复制
pantheios::log_INFORMATIONAL(PSTR("   [1]   "),PSTR(log_text));

如何修复此错误?

EN

回答 1

Stack Overflow用户

发布于 2012-04-10 01:43:09

恐怕我不能直接回答您,但比较我的解决方案(在许多方面类似于您的setup - .NET DLL调用C++本机DLL,后者具有Pantheios日志记录),下面是我所拥有的:

我有一个项目日志,其中有一个InitInstance()和ExitInstance() (CWinApp派生类的ctor-

  • ctor/dtor

  • InitInstance()和ExitInstance()中的代码都是空的:

BOOL CLogApp::InitInstance() { CWinApp::InitInstance();libraries= pantheios::pantheios_init();if( panres <0){OutputDebugStringA(“无法初始化Pantheios记录库!\n”);util::onBailOut( Pantheios::/*pantheios::*/pantheios_getInitCodeString(panres));,“初始化Pantheios库失败”,PANTHEIOS_FE_PROCESS_IDENTITY,util返回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(“开始记录”);}返回TRUE;} int CLogApp::ExitInstance() {PANTHEIOS_TRACE_NOTICE(“停止记录”);pantheios_uninit();返回0;}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9664626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档