YuriyRusinov
4th December 2007, 18:07
Hello, All !
I develop class library for linux and windows. Here is headers files
searchengine.h
#ifdef WIN32
#define SEARCH_EXPORT __declspec(dllexport)
#else
#define SEARCH_EXPORT
#endif
class SearchForm;
class SEARCH_EXPORT SearchEngine : public QObject
{
public:
SearchEngine (QObject *parent=0);
...
static SearchEngine* GUISetParams (QWidget *parent=0, Qt::WFlags f=0);
...
private:
SearchForm *sForm;
...
private:
Q_OBJECT
};
searchform.h
class SearchEngine;
class SearchForm : public QDialog
{
public:
SearchForm (SearchEngine *se, QWidget *parent=0, Qt::WFlags f=0);
...
private:
SearchEngine *sEngine;
...
private:
Q_OBJECT
};
Sources files are
searchengine.cpp
#include "searchengine.h"
#include "searchform.h"
SEARCH_EXPORT SearchEngine * SearchEngine::self=0;
SearchEngine::SearchEngine (QObject *parent)
: QObject (parent)
{
};
...
SearchEngine* SearchEngine::GUISetParams (QWidget *parent, Qt::WFlags f)
{
SearchEngine *se = new SearchEngine ();
se->sForm = new SearchForm (se);
se->sForm->show ();
return se;
}
searchform.cpp
SearchForm (SearchEngine *se, QWidget *parent, Qt::WFlags f) :
QDialog (parent,f ),
sEngine (se)
{
...
}
...
When I try to build project under Linux, all works fine, but if I try to do it under Windows, I receive some linkage warnings such this
searchform.obj : warning LNK4217: locally defined symbol ?setTimeRange@SearchEngine@@QAEXABVQDateTime@@0@Z (public: void __thiscall SearchEngine::setTimeRange(class QDateTime const &,class QDateTime const &)) imported in function "private: void __thiscall SearchForm::Search(void)" (?Search@SearchForm@@AAEXXZ)
...
function SearchEngine::setTimeRange (const QDateTime&, const QDateTime&) and others are defined in searchengine.cpp. Where is the troubles and which way I have to solve this problem ?
Thanks in advance.
I develop class library for linux and windows. Here is headers files
searchengine.h
#ifdef WIN32
#define SEARCH_EXPORT __declspec(dllexport)
#else
#define SEARCH_EXPORT
#endif
class SearchForm;
class SEARCH_EXPORT SearchEngine : public QObject
{
public:
SearchEngine (QObject *parent=0);
...
static SearchEngine* GUISetParams (QWidget *parent=0, Qt::WFlags f=0);
...
private:
SearchForm *sForm;
...
private:
Q_OBJECT
};
searchform.h
class SearchEngine;
class SearchForm : public QDialog
{
public:
SearchForm (SearchEngine *se, QWidget *parent=0, Qt::WFlags f=0);
...
private:
SearchEngine *sEngine;
...
private:
Q_OBJECT
};
Sources files are
searchengine.cpp
#include "searchengine.h"
#include "searchform.h"
SEARCH_EXPORT SearchEngine * SearchEngine::self=0;
SearchEngine::SearchEngine (QObject *parent)
: QObject (parent)
{
};
...
SearchEngine* SearchEngine::GUISetParams (QWidget *parent, Qt::WFlags f)
{
SearchEngine *se = new SearchEngine ();
se->sForm = new SearchForm (se);
se->sForm->show ();
return se;
}
searchform.cpp
SearchForm (SearchEngine *se, QWidget *parent, Qt::WFlags f) :
QDialog (parent,f ),
sEngine (se)
{
...
}
...
When I try to build project under Linux, all works fine, but if I try to do it under Windows, I receive some linkage warnings such this
searchform.obj : warning LNK4217: locally defined symbol ?setTimeRange@SearchEngine@@QAEXABVQDateTime@@0@Z (public: void __thiscall SearchEngine::setTimeRange(class QDateTime const &,class QDateTime const &)) imported in function "private: void __thiscall SearchForm::Search(void)" (?Search@SearchForm@@AAEXXZ)
...
function SearchEngine::setTimeRange (const QDateTime&, const QDateTime&) and others are defined in searchengine.cpp. Where is the troubles and which way I have to solve this problem ?
Thanks in advance.