Я использую autotools в качестве системы сборки для моей библиотеки. Недавно библиотека портирована на Windows. Библиотека успешно компилируется и связывается, хотя я столкнулся со странной ошибкой. Есть только статические библиотеки после configure и make. Все выглядит нормально, кроме предупреждения от libtool
:
libtool: undefined symbols not allowed in i686-pc-mingw32 shared
Я экспортировал все символы для машин Windows по этому коду:
#ifdef _WIN32
# ifdef DLL_EXPORT
# define LIBRARY_API __declspec(dllexport)
# else
# define LIBRARY_API __declspec(dllimport)
# endif
#endif
#ifndef _WIN32
# define LIBRARY_API
#endif
И в каждом определении я имею:
class LIBRARY_API myClass {
// ...
Заметки:
Операционная система: Windows 8 x86_64
Компилятор: MinGW x86_64, MSYS x86
В вашем configure.ac
, убедитесь, что ваша инициализация libtool выглядит так:
LT_INIT([win32-dll])
Также нужно пройти -no-undefined
флаг libtool в вашем Makefile.am
, Этот флаг отключает предупреждение, которое вы получаете:
libexample_la_LDFLAGS = -no-undefined
Подробнее об этом в Документация LT_INIT.
Других решений пока нет …