libtool: неопределенные символы не разрешены в общем доступе i686-pc-mingw32

Я использую 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


person sorush-r    schedule 05.07.2013    source источник


Ответы (1)


В вашем configure.ac убедитесь, что ваша инициализация libtool выглядит так:

LT_INIT([win32-dll])

Кроме того, вам нужно передать флаг -no-undefined в libtool в файле Makefile.am. Этот флаг отключает предупреждение, которое вы получаете:

libexample_la_LDFLAGS = -no-undefined

Подробнее об этом читайте в документации по LT_INIT.

person Community    schedule 05.04.2014