2013-07-05 4 views
4

Я использую autotools как систему сборки для моей библиотеки. Недавно библиотека портирована в Windows. Библиотека успешно компилирует и связывает, хотя я обнаружил странную ошибку. После настройки и создания есть только статические библиотеки. Evertything выглядит нормально, за исключением предупреждения от libtool:libtool: undefined символы не разрешены t в i686-pc-mingw32 shared

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
Compiler Suite: MinGW x86_64, MSYS x86

ответ

10

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

LT_INIT([win32-dll]) 

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

libexample_la_LDFLAGS = -no-undefined 

Более подробно об этом в LT_INIT documentation.