Вход в Pantheios в C ++ DLL - PullRequest
       1

Вход в Pantheios в C ++ DLL

3 голосов
/ 26 января 2011

Вот сценарий:

У меня есть 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);

Это создаст mylogfile.log файл с содержимым 'START TESTAPP'

СЕЙЧАС ПРОБЛЕМА:

Я также хотел бы добавить запись из misc.dll и common.dll в mylogfile.log. Другими словами, если я добавлю логин testMiscfunction() в misc.dll, я бы хотел, чтобы этот лог от testMiscfunction() для записи в mylogfile.log. И, конечно, то же самое с common.dll.

Теперь вот пример записи DLL для misc.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. Вопрос: почему? Что нужно сделать.

Спасибо ....

1 Ответ

1 голос
/ 26 января 2011

Библиотеки DLL должны динамически связываться с Pantheios, поэтому они будут использовать одни и те же данные.В этом случае вам не нужно вызывать функции Pantheios init / uninit из точки входа DLL (что, вероятно, в любом случае является плохой идеей).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...