【发布时间】:2011-11-25 19:24:45
【问题描述】:
操作系统:MAC X 10.7.0
Mac OS X 在 /usr 中安装了旧版本的 wxMac(wxMac-2.8.8.1),但我在 /usr/local 中安装了较新版本的 wxMac(wxMac-2.8.12.0)。要安装它,我用标志编译新的:
arch_flags="-arch i386" ./configure CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags" OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags" --enable-unicode --enable-debug - -禁用共享
然后我写了一个简单的程序(hello2.cpp)来测试它:
#include "wx/wx.h"
class HelloWorldApp : public wxApp
{
public:
virtual bool OnInit();
private:
wxButton *button;
};
IMPLEMENT_APP(HelloWorldApp)
bool HelloWorldApp::OnInit()
{
wxFrame *frame = new wxFrame((wxFrame*) NULL, -1, _T("Hello wxWidgets World"));
frame->CreateStatusBar();
frame->SetStatusText(_T("Hello World"));
button = new wxButton((wxFrame *)frame, -2, _T("123"));
frame->Show(TRUE);
SetTopWindow(frame);
return true;
}
我在命令行中用 flag 编译这个测试程序:
g++ hello2.cpp /usr/local/bin/wx-config --cxxflags --libs -o hello2
但我收到了一些警告和错误。我是Mac编程的新手,所以我不知道原因。我只想说:救命!
编译结果如下:
ld:警告:在 /usr/local/lib/libiconv.dylib 中,文件是为不受支持的文件格式构建的,它不是所链接的体系结构 (i386) 未定义的符号: “_libiconv_open”,引用自: wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) “_libiconv”,引用自: wxMBConv_iconv::GetMBNulLen() 常量在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::WC2MB(char*, wchar_t const*, unsigned long) 约束 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::WC2MB(char*, wchar_t const*, unsigned long) 约束 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::MB2WC(wchar_t*, char const*, unsigned long) 约束 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::MB2WC(wchar_t*, char const*, unsigned long) 约束 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) “_libiconv_close”,引用自: wxMBConv_iconv::~wxMBConv_iconv() in libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::~wxMBConv_iconv() in libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::~wxMBConv_iconv() in libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::~wxMBConv_iconv() in libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::~wxMBConv_iconv() in libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::~wxMBConv_iconv() in libwx_base_carbonud-2.8.a(baselib_strconv.o) ld:未找到符号 collect2: ld 返回 1 个退出状态
【问题讨论】: