Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6137801
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T17:46:20+00:00 2026-05-23T17:46:20+00:00

I’m trying to use a Singleton Class (its a program-wide debug logger called ‘PrisLog’)

  • 0

I’m trying to use a Singleton Class (its a program-wide debug logger called ‘PrisLog’) across my Qt Application. The program also has plugins. I want to make my singleton class available to those plugins, but this doesn’t work. From what I can tell, trying to use the class in the plugin results in another instance being created.

-The singleton class is just a *.cpp and *.h file, nothing else. I’ve linked both my main application and the plugin to these files individually… is this the right way to do it?

-I’ve attached my singleton class’s code below, though I think I’ve created the class correctly. If I use it from within separate classes in my main application, it works as expected (one instance).

EDIT: Linking both the application and plugin to the same static lib (the singleton class) works. Here’s how my qmake *.pro files looked:

MySingletonLib.pro

TEMPLATE = lib

CONFIG += staticlib

HEADERS += \
mysingletonlib.h

SOURCES += \
mysingletonlib.cpp

MyPlugin.pro (also incl #include mysingletonlib.h in myplugin.h)

INCLUDEPATH += path/to/MySingletonLib

LIBS += -Lpath/to/MySingletonLib -lMySingletonLib

MyPlugin.pro (also incl #include mysingletonlib.h in myapp.h)

INCLUDEPATH += path/to/MySingletonLib

LIBS += -Lpath/to/MySingletonLib -lMySingletonLib

And the original code:

#ifndef PRISLOG_H
#define PRISLOG_H

#include <QFile>
#include <QDir>
#include <QString>
#include <QMutex>
#include <QDebug>
#include <QMutexLocker>
#include <QTextStream>
#include <QDateTime>

// PrisLog (singleton) class definition
class PrisLog
{

public:
    static PrisLog* Instance();

    void SetLogsPath(QString);
    QString GetLogsPath();

    void SetDebugDestination(QString);
    void SetElmRxDestination(QString);
    void SetElmTxDestination(QString);
    void SetDlgDestination(QString);

    QTextStream* GetDebugStream();
    QTextStream* GetElmRxStream();
    QTextStream* GetElmTxStream();
    QTextStream* GetDlgStream();

    QMutex* GetDebugMutex();

private:
    PrisLog();                          // private constructor
    PrisLog(const PrisLog&);            // prevent copy constructor
    PrisLog& operator=(const PrisLog&); // prevent assignment

    static PrisLog* m_Instance;
    static bool m_InitFlag;

    QString m_appPath;

    QFile m_DebugFile;
    QTextStream m_DebugStream;
    QMutex m_DebugMutex;

    QFile m_ElmRxFile;
    QTextStream m_ElmRxStream;

    QFile m_ElmTxFile;
    QTextStream m_ElmTxStream;

    QFile m_DlgFile;
    QTextStream m_DlgStream;

};

// thread-UNSAFE writer, but less expensive
// use: single stream <--> single thread!
class PrisLogWriter
{

public:
    PrisLogWriter(QTextStream*);
    ~PrisLogWriter();

    QTextStream* m_stream;
};

// thread-UNSAFE writer, but less expensive
// this version does not include any formatting
// use: single stream <--> single thread!
class PrisLogRawWriter
{

public:
    PrisLogRawWriter(QTextStream*);
    ~PrisLogRawWriter();

    QTextStream* m_stream;
};

// thread-safe writer
// use: single stream <--> many threads
class PrisLogSafeWriter
{

public:
    PrisLogSafeWriter(QTextStream*, QMutex*);
    ~PrisLogSafeWriter();

    QTextStream* m_stream;

private:
    QMutex* m_mutex;
};


#define PRISLOGDEBUG (*(PrisLogSafeWriter(PrisLog::Instance()->GetDebugStream(), PrisLog::Instance()->GetDebugMutex()).m_stream))
#define PRISLOGELMRX (*(PrisLogWriter(PrisLog::Instance()->GetElmRxStream()).m_stream))
#define PRISLOGELMTX (*(PrisLogWriter(PrisLog::Instance()->GetElmTxStream()).m_stream))
#define PRISLOGDLG (*(PrisLogRawWriter(PrisLog::Instance()->GetDlgStream()).m_stream))


#endif // PRISLOG_H
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T17:46:20+00:00Added an answer on May 23, 2026 at 5:46 pm

    I think you should take this class to a statically linked, but separeted shared dll/so.

    If your host application does not use this class, the linker simply won’t link it into the binary and your plugin could not use it. Additionally: your binary has no library class interface.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am trying to understand how to use SyndicationItem to display feed which is
Basically, what I'm trying to create is a page of div tags, each has
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out
link Im having trouble converting the html entites into html characters, (&# 8217;) i
I'm new to using the Perl treebuilder module for HTML parsing and can't figure
Seemingly simple, but I cannot find anything relevant on the web. What is the
Does anyone know how can I replace this 2 symbol below from the string
this is what i have right now Drawing an RSS feed into the php,
That's pretty much it. I'm using Nokogiri to scrape a web page what has
I have just tried to save a simple *.rtf file with some websites and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.