【问题标题】:How to get log by using logog in DLL API's in C++如何在 C++ 中使用 DLL API 中的徽标获取日志
【发布时间】:2012-09-05 06:10:58
【问题描述】:

如何在 DLL API 中写入日志?

在我的程序中,我使用两个线程和一个主线程。我正在初始化:

LOGOG_INITIALIZE();

logog::LogFile errFile("log.txt");

进入我的主线程并在主线程其他两个线程中使用INFOERR。我的主线程正在使用 C++ DLL API。我完美地从主线程和另外两个正在运行的线程获取日志,但我的问题是我无法从 DLL API 的流中获取日志。如何在 DLL API 中使用 logog 获取日志。如果我在 DLL API 中使用INFO,我想在这里明确一下。它正在崩溃,但如果我在 DLL API 中执行 LOGOG_INITIALIZE();INFO 会执行但不会记录任何内容。

【问题讨论】:

    标签: c++ error-logging


    【解决方案1】:

    如果我理解正确,您的情况如下:例如,您有一个使用共享库 (DLL) 的应用程序 (EXE)。您希望能够从 EXE 和 DLL 中记录。

    上次我检查了logog 库时遇到了上述情况。也许现在已经纠正了?

    在 windows 下(仅限!),logog 库不导出任何符号 - 它根本不适合用作 DLL。这会迫使您构建和使用 logog 作为静态库 - 这会导致 logog 库中的静态变量出现问题,这些变量应该只存在一次,但实际上存在的次数与静态库链接到模块的次数一样多(EXE 或 DLL)。

    解决方案是构建 logog 库并将其用作 DLL。

    也许这涵盖了您的问题,您可能会努力导出logog 库的符号。或者你可以联系图书馆作者。

    【讨论】:

    • 感谢您的帮助。但无法准确理解使用 as dll 而不是 lib 将如何解决问题。
    • @user1648040:也许您应该提供一些示例代码来准确说明/重现您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    相关资源
    最近更新 更多