Здравствуйте.
Столкнулся с проблемой следующего характера:
Надо собрать две разных библиотеки, первая использует вторую.
Под linux проблем никаких, под win32 - беда.
Используемые дистрибутивы:
Qt 3.2.3, MSVC++ 6.0, Windows 2003 Server
Библиотека 1: (lib1)
mywidget.ui
mywidgetimpl.h
mywidgetimpl.cpp -- порождены uic'ом из mywidget.ui с дальнейшей модификацией вручную.
в mywidgetimpl.h класс MyWidgetImpl объявлен следующим образом:
#ifdef Q_WS_WIN
# include <windows.h>
# ifdef LIB1_EXPORTS
# define LIBI1_API __declspec(dllexport)
# else
# define LIB1_API __declspec(dllimport)
# endif
#else
# define LIB1_API
#endif // Q_WS_WIN
#include "mywidget.h"
class LIB1_API MyWidgetImpl: public MyWidget {
Q_OBJECT
MyWidgetImpl( QWidget * parent = NULL, const char * name = NULL );
...
};
В lib1.pro прописано, конечно же:
win32 {
DEFINES += LIB1_EXPORTS
}
эти хитрые опции сделаны для того, чтобы использовать разные директивы _dllexport/__dllimport, когда этот же h-файл подключается изнутри/извне.
Собирается это всё на ура, совершенно спокойно.
Но.
При попытке собрать что-либо с получившейся библиотекой на стадии сборки (linking) выдаёт следующее:
"otherwidgetimpl.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall MyWidget::languageChange(void)" (?languageChange@MyWidget@@MAEXXZ)"
Где я что забыл?.. Под linux/Qt 3.2.3 всё собирается и работает.
Заранее спасибо.