libtool:i686-pc-mingw32共享中不允许使用未定义的符号

sor*_*h-r 5 c++ mingw libtool mingw-w64

我正在使用autotools作为我的库的构建系统.最近,库被移植到Windows.虽然我遇到了一个奇怪的错误,但库成功编译并成功链接.配置和make后只有静态库.除了以下警告之外,Evertything看起来还不错libtool:

libtool: undefined symbols not allowed in i686-pc-mingw32 shared
Run Code Online (Sandbox Code Playgroud)

我通过以下代码导出了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
Run Code Online (Sandbox Code Playgroud)

在我的每一个定义中:

class LIBRARY_API myClass {
// ...
Run Code Online (Sandbox Code Playgroud)

:
操作系统:Windows 8 x86_64
编译器套件:MinGW x86_64,MSYS x86

小智 12

在你的configure.ac,确保你的libtool初始化如下:

LT_INIT([win32-dll])
Run Code Online (Sandbox Code Playgroud)

此外,您需要将-no-undefined标志传递给您的libtool Makefile.am.此标志禁用您收到的警告:

libexample_la_LDFLAGS = -no-undefined
Run Code Online (Sandbox Code Playgroud)

LT_INIT文档中有关此内容的更多详细信息.