Если что, я не плюсист. Было свободное время решил вспомнить язык и наваять простую DLL, которая в свою очередь используется доступную библиотеку podofo (работа с PDF). Когда подключаю podofo.lib в виде библиотеки импорта то все компилируется. А если делаю статическую podofo.lib, выскакивают ошибки линковки вида:
неразрешенный внешний символ "__declspec(dllimport) private: virtual void __cdecl PoDoFo::PdfMemDocument::reset(void)" (__imp_?reset@PdfMemDocument@PoDoFo@@EEAAXXZ). PoDoFo::PdfMemDocument::reset(void)" (__imp_?reset@PdfMemDocument@PoDoFo@@EEAAXXZ).
Ругается на private и protected члены импортируемого класса PoDoFo::PdfMemDocument. Их же вроде вообще не должно быть видно извне? Я чего то не догоняю. Ткните куда копать.
Жизнь не обязана доставлять удовольствие. Достаточно отсутствия страданий.
Здравствуйте, s_aa, Вы писали:
_>Если что, я не плюсист. Было свободное время решил вспомнить язык и наваять простую DLL, которая в свою очередь используется доступную библиотеку podofo (работа с PDF). Когда подключаю podofo.lib в виде библиотеки импорта то все компилируется. А если делаю статическую podofo.lib, выскакивают ошибки линковки вида:
_>_>неразрешенный внешний символ "__declspec(dllimport) private: virtual void __cdecl PoDoFo::PdfMemDocument::reset(void)" (__imp_?reset@PdfMemDocument@PoDoFo@@EEAAXXZ). PoDoFo::PdfMemDocument::reset(void)" (__imp_?reset@PdfMemDocument@PoDoFo@@EEAAXXZ).
_>Ругается на private и protected члены импортируемого класса PoDoFo::PdfMemDocument. Их же вроде вообще не должно быть видно извне? Я чего то не догоняю. Ткните куда копать.
В имени неразрешенного символа есть префикс
__imp_, указывающий на то что твои исходники пользуют АПИ PoDoFo в динамическом режиме а не в статическом. Вероятно, ты не определил какой ни будь настроечный макрос, что ни будь типа
PDOFO_STATIC_LINK.. Покури
это, наверняка поможет.
Здравствуйте, s_aa, Вы писали:
_>Если что, я не плюсист. Было свободное время решил вспомнить язык и наваять простую DLL, которая в свою очередь используется доступную библиотеку podofo (работа с PDF). Когда подключаю podofo.lib в виде библиотеки импорта то все компилируется. А если делаю статическую podofo.lib, выскакивают ошибки линковки вида:
_>_>неразрешенный внешний символ "__declspec(dllimport) private: virtual void __cdecl PoDoFo::PdfMemDocument::reset(void)" (__imp_?reset@PdfMemDocument@PoDoFo@@EEAAXXZ). PoDoFo::PdfMemDocument::reset(void)" (__imp_?reset@PdfMemDocument@PoDoFo@@EEAAXXZ).
Для сборки статической библиотеки не должно быть __declspec(dllimport).
Там класс объявляется как-то так:
class PODOFO_DECLSPEC PdfMemDocument { ... };
При сборке в видe dll будет:
#define PODOFO_DECLSPEC __declspec(dllimport)
а для статической либы должно быть:
#define PODOFO_DECLSPEC