libtool: undefined symbols not allowed in i686-pc-mingw32 shared
Asked Answered
B

1

7

I'm using autotools as build system for a library of mine. Recently library is ported to Windows. Library compiles and links successfully though I encountered a strange error. There is only static libraries after configure and make. Evertything looks OK except a warning from libtool:

libtool: undefined symbols not allowed in i686-pc-mingw32 shared

I have exported all symbols for Windows machines by this code:

#ifdef _WIN32
#    ifdef DLL_EXPORT
#        define LIBRARY_API __declspec(dllexport)
#    else
#        define LIBRARY_API __declspec(dllimport)
#    endif
#endif
#ifndef _WIN32
#    define LIBRARY_API
#endif

And in every single definition I have:

class LIBRARY_API myClass {
// ...

Notes:
Operating System: Windows 8 x86_64
Compiler suite: MinGW x86_64, MSYS x86

Buonaparte answered 5/7, 2013 at 11:31 Comment(0)
R
17

In your configure.ac, make sure your libtool initialization looks like:

LT_INIT([win32-dll])

Also, you need to pass -no-undefined flag to libtool in your Makefile.am. This flag disables the warning you are getting:

libexample_la_LDFLAGS = -no-undefined

More details about this in the LT_INIT documentation.

Rightist answered 5/4, 2014 at 18:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.