我正在使用自动工具作为我的库的构建系统。最近库被移植到Windows。尽管我遇到了一个奇怪的错误,但库编译和链接成功。配置和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 {
// ...
Notes:
操作系统:Windows 8 x86_64
编译套件:MinGW x86_64、MSYS x86
In your configure.ac
,确保您的 libtool 初始化如下所示:
LT_INIT([win32-dll])
另外,你还需要通过-no-undefined
标记为 libtool 在你的Makefile.am
。此标志禁用您收到的警告:
libexample_la_LDFLAGS = -no-undefined
有关此内容的更多详细信息,请参阅LT_INIT 文档 http://www.gnu.org/software/libtool/manual/html_node/LT_005fINIT.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)