2009-02-23 84 views
1

我想将基于WxWidgets 2.8.9的Windows应用程序移植到MacOS X.我已经到了一切成功编译的地步,除了一些与WxWidgets相关的缺失符号。我试着用命令行和XCode编译WxWidgets,我尝试了几种不同的配置选项,但没有一个能够正常工作。 WxWidgets Wiki有几篇关于这个here的文章,但大部分信息已经过时,并没有解决我的问题。WxWidgets/GCC/MacOs X:如何正确构建并链接WxWidgets库?

我得到的最接近是通过用

./configure --enable-monolithic 
make 

然后在命令行编译wxWidgets的我加入“wxMac-2.8.9/lib目录/ libwx_mac-2.8.a”到“其他链接的库链接器标志“在我的XCode项目设置。

但是这给了我下面的链接错误:

“wxOnAssert(字符常量*,整型,字符常量*,字符常量*,字符常量*)”,从引用: wxStringBase :: wxStringBase(wxStringBase常量&)在MyFrame.o wxCloseEvent ::否决(布尔)在MyFrame.o wxStringBase :: wxStringBase(wxStringBase常量&)在TGameSettingsForm.o wxCheckBoxBase :: DoSet3StateValue(wxCheckBoxState)在TGameSettingsForm.o wxCheckBoxBase :: DoGet3StateValue ()const在TGameSettingsForm.o wxStringBase :: wxStringBase(wxStringBase const &)在NonoGameStates.o wxStringBase :: wxStringBase(wxStringBase常量&)在TWxInvalidRegCodeForm.o

“_iconv_close”,从引用:在libwx_mac-2.8.a(monolib_strconv.o wxMBConv_iconv ::〜wxMBConv_iconv()) wxMBConv_iconv ::〜wxMBConv_iconv()在libwx_mac-2.8.a(monolib_strconv.o) wxMBConv_iconv ::〜wxMBConv_iconv()在libwx_mac-2.8.a(monolib_strconv.o) wxMBConv_iconv ::〜wxMBConv_iconv()在libwx_mac-2.8 .a(monolib_strconv.o)

“wxAppConsole :: OnAssert(char const *,int,char const *,char const *)”,引用来自: 虚表为CMyWxApp3_wxstaticAppin MyWxApp3-wxstaticApp.o

“_iconv”,从引用: wxMBConv_iconv :: GetMBNulLen()const的在libwx_mac-2.8.a(monolib_strconv.o) wxMBConv_iconv :: WC2MB(字符*,wchar_t的常量*,unsigned long)constin libwx_mac-2.8.a(monolib_strconv.o) wxMBConv_iconv :: WC2MB(char *,wchar_t const *,unsigned long)constin libwx_mac-2.8.a(monolib_strconv.o) wxMBConv_iconv :: MB2WC(wchar_t *,char const *,unsigned long)constin libwx_mac-2.8.a(monolib_strconv.o) wxMBConv_iconv :: MB2WC(wchar_t *,char const *,unsigned long)constin libwx_mac-2.8.a(monolib_strconv.o) wxMBConv_iconv: :在libwx_mac-2.8.a(monolib_strconv.o)中的wxMBConv_iconv(char const *)

“wxAppConsole :: OnAssertFailure(字符常量*,整型,字符常量*,字符常量*,字符常量*)”,引用自: 虚函数表的CMyWxApp3_wxstaticAppin MyWxApp3-wxstaticApp.o “_iconv_open”,从引用: wxMBConv_iconv :: wxMBConv_iconv(字符常量*)在libwx_mac-2.8.a(monolib_strconv.o) wxMBConv_iconv :: wxMBConv_iconv(字符常量*)在libwx_mac-2.8.a(monolib_strconv.o) wxMBConv_iconv :: wxMBConv_iconv(字符常量*)在libwx_mac-2.8.a(monolib_strconv。O) wxMBConv_iconv :: wxMBConv_iconv(字符常量*)在libwx_mac-2.8.a(monolib_strconv.o) LD:符号(S)没有发现 collect2:LD返回1退出状态

如果可能的话,我宁愿动态链接,而不是上面使用的静态链接。但是,目前我很乐意让它运行。如果任何人都可以给我(或者指点我)一步一步地描述如何编译和链接WxWidgets库,我会非常感谢。

感谢,

阿德里安

+0

wxWiki指南应该是最新的和工作的。您可以尝试本地化问题的根源:尝试使用wx 2.8.9构建示例,并尝试针对系统提供的wxWidgets版本构建应用程序。如果两者都有效,则可能在构建中的两个版本之间有冲突。 – mghie 2009-02-23 21:42:17

回答

1

我还没有建立WX在MacOS下,但我不使用它广泛的Windows和Linux下。你链接的页面上的说明看起来非常类似于Linux下和它说:

令之后,你会发现你的文件夹(例如, 累积释放)下的 建库。这也是 对应的wx-config所在的地方。

Linux下的wx-config脚本使建设项目轻而易举,只需使用命令wx-config --cxxflags以获取所需的gcc编译标志和wx-config --libs获得所有所需的库联系起来。在Code :: Blocks之类的构建环境下,您可以在项目设置中使用这些命令,但我不熟悉XCode - 但最糟糕的情况是您只需复制wx-config脚本列出的编译器和链接器选项。

+0

尽管只有当我将wxWidgets编译为动态库时,它才起作用。出于某种原因,尽管使用wx-config脚本,我仍然会丢失符号。 – 2009-02-27 12:55:24

0

wxOnAssert产权相关的错误意味着你在调试建立资料库(__WXDEBUG__定义,NDEBUG是不是),而wxWidgets库建于发布版本(没有定义__WXDEBUG__)。解决方案很简单:不要这样做。

如果您需要构建调试版本,请在调试模式下使用--enable-debug配置参数并使用wx-config --debug ...来获取相应的标志,从而构建wxWidgets。