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

4

Решение

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

LT_INIT([win32-dll])

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

libexample_la_LDFLAGS = -no-undefined

Подробнее об этом в Документация LT_INIT.

12

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]