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 Intestmiscsfunction()
,我希望从
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。如果静态链接,则使用自己的库实例。