Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Pantheios登录C++;动态链接库_C++_Logging - Fatal编程技术网

C++ Pantheios登录C++;动态链接库

C++ Pantheios登录C++;动态链接库,c++,logging,C++,Logging,下面是一个场景: 我有testApp.cpp,它有main功能。这个testApp.cpp使用misc.dll和common.dll库 我想创建一个日志文件,而不是控制台 因此,在testApp.cppmain()函数中,我使用以下命令: pantheios::pantheios_init(); pantheios_be_file_setFilePath("mylogfile.log"); pantheios::log_NOTICE(" START TESTAPP"); // Call fun

下面是一个场景:

我有
testApp.cpp
,它有
main
功能。这个
testApp.cpp
使用
misc.dll
common.dll

我想创建一个日志文件,而不是控制台

因此,在
testApp.cpp
main()
函数中,我使用以下命令:

pantheios::pantheios_init();
pantheios_be_file_setFilePath("mylogfile.log");
pantheios::log_NOTICE(" START TESTAPP");

// Call function from misc.dll and common.dll
pantheios::log_NOTICE(" END TESTAPP ");
pantheios_be_file_setFilePath(NULL);
这将创建内容为“START TESTAPP”的
mylogfile.log
文件

现在的问题是:

我还想将日志记录从misc.dll和common.dll添加到
mylogfile.log
。 换句话说,如果我在misc.dll中添加log In
testmiscsfunction()
,我希望从
testmiscsfunction()
写入mylogfile.log。 当然,common.dll也是如此

下面是misc.DLL的DLL条目示例

#include "pantheios/pantheios.hpp" 
#include "pantheios/backends/bec.file.h" 
#include "pantheios/implicit_link/core.h"
#include "pantheios/implicit_link/be.file.h"

extern "C" const char PANTHEIOS_FE_PROCESS_IDENTITY[] = "MISC_DLL"; 

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
            )
{
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
            pantheios::pantheios_init();
            break;

        case DLL_THREAD_ATTACH:
            break;


        case DLL_THREAD_DETACH:
            break;


        case DLL_PROCESS_DETACH:
            pantheios::pantheios_uninit();
            break;
    }
    return TRUE;

}
那么现在

testMiscFunction() { pantheios::log_NOTICE("I am testMiscFunction"); } 
所以“我是testMiscFunction”并没有被写入mylogfile.txt,问题是:为什么?需要做什么


谢谢

DLL应该动态链接到Pantheios,以便它们使用相同的数据。在这种情况下,您不需要从DLL入口点调用Pantheios init/uninit函数(无论如何这可能是个坏主意)。

我看不出从任一DLL进行日志记录有任何问题,您能否准确地说明问题,或者告诉我们您尝试了什么以及出现了什么问题?以下是misc.dll的示例代码:我更新了原始问题以包含示例misc.dll代码。如果我没有从dll入口点调用iniy/unint函数,那么当testMiscFunction()调用并尝试写入日志文件时,程序会崩溃。这就是我添加它的原因。DLL应该动态链接到Panetheios。如果静态链接,则使用自己的库实例。