qt4 — Сигналы и слоты Qt прерываются при преобразовании проекта Visual C ++ для ускорения сборки файла makefile

Я создал проект Visual C ++, используя MSVS, и я только что сделал другой проект в MSVS, чтобы тот же код мог быть собран с помощью Boost build. В настоящее время я могу построить свой проект, используя проект Visual C ++, а также проект Makefile, который использует boost build.
Между этими двумя сборками есть разница, касающаяся сигналов QT и слотов. Для следующего кода, когда я звоню MyThread::Start() onTimeout() Слот вызывается, когда проект создается в Visual Studio, но не вызывается при сборке с использованием boost build.

class MyThread: public QObject{
Q_OBJECT
public:
bool start();
public Q_SLOTS:
void onTimeout();
private:
QThread m_thread;
QTimer m_timer;
};
void MyThread::start()
{
m_timer.start(1000);
m_thread.setObjectName(QString("GigeControl"));
m_thread.start();
m_timer.moveToThread(&m_thread);
}
void MyThread::onTimeout()
{
//Do Stuff

}

Я действительно испытываю трудности, пытаясь выяснить разницу между двумя
билды, тем более что мне нужны эти сигналы и слоты для работы.
Одно существенное отличие, которое я заметил, заключается в том, что проект Visual C ++ построен с использованием /Zp1 так что все структуры с 1 байтом выровнены. Это не сделано в проекте повышения, поскольку я не знаю, как это сделать. Я видел людей в интернете, упоминающих, что структура структуры (особенно с использованием #pragma pack может вызвать проблемы с QT).

Если у кого-то есть опыт, которым он может поделиться, он будет очень признателен.

0

Решение

Похоже, проблема заключалась в структуре упаковки. Я пишу код для пары баз кода, которые объединяются, и по совпадению случаются конфликты пакетов.
Чтобы исправить упаковку для сборки с boost-build, все что мне нужно было добавить это в библиотеку, генерируемую в Jamfile:

    lib foo
:
...
:
...
<target-os>linux:<cxxflags>-fpack-struct=1
<target-os>windows:<cxxflags>-Zp1
;

Это сработало для меня, так что, надеюсь, это поможет кому-то еще, если они застрянут здесь

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector