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文档中有关此内容的更多详细信息.