【问题标题】:link correctly against wxWidgets正确链接到 wxWidgets
【发布时间】:2014-05-06 12:52:43
【问题描述】:

所以, 最近我为 C++ 下载了最新版本的 wxPack (wxWidgets3.0.0),并安装了它。现在我想在我的程序中使用它,我在库的基本目录中包含了“包含”路径,并将 gcc48_lib 目录添加到库目录中。但是,我不太清楚要链接哪个库才能让我的对话框显示一个按钮。我尝试了libwxmsw30ulibwxmsw30u_core,两者都出现了链接错误,这里有几个未定义的对 wxWidget 组件的引用,比如几个类方法。我已经尝试在谷歌上搜索这个,但我得到的只是关于如何构建实际 wxWidgets 源代码的教程,而不是如何链接它,所以那里没有有价值的信息。任何帮助将不胜感激。

【问题讨论】:

  • 忘记在 Windows 8 下使用 32 位版本的 TDM-GCC-Compiler 添加该即时消息。

标签: c++ wxwidgets


【解决方案1】:

this wxWidgets page 上描述了链接所需的库。

如您所见,始终需要wxBase(在您的情况下为libwxbase30u),然后是所有GUI 内容的wxCore。其余部分仅由某些组件使用,在该页面上再次进行了描述。

还有一些其他的辅助库,如 libwxzliblibwxpngd,但这些应该很容易通过缺少符号的名称或其相关功能来确定(压缩、PNG 图像,...) .

【讨论】:

  • 现在 wx* 未定义符号消失了,但我现在得到不同的未定义符号错误,例如_imp__GetObjectW@12_imp__DeleteObject@4 。我之前遇到过这些错误,ppl 建议我应该链接到 ole32 或 gdi32,我也尝试过 mingw32,但这些都不起作用。我仍然得到错误
  • 好的,这在 Windows 的 GDI32.DLL 中 - 您通常需要链接到常见的 Windows 库。我在 Google 上搜索的一个 wxWidgets 示例很快说 -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32,它应该适用于最常用的 API。
  • 我在wx/thread.h 文件中得到错误,在vswscanf 等几个wxWidgets 函数中,对__ms_vswscanf 的未定义引用。 C/C++ 中的库处理很糟糕。 :(
  • 以及来自 gdi32 的所有 'deleteObject' / 'createObject' 未定义引用仍然存在。
  • 现在用 64 位编译它并添加了 lib64,现在我“只”得到 3 个未定义的参考错误,如下所示:C:\Users\Daniel\Documents\API\C++\wxWidgets3.0\lib64\gcc48_lib\libwxbase30u.a(baselib_filename.o):filename.cpp|| undefined reference to IID_IShellLinkW'|`。知道那是什么吗? __imp_coCreateInstance 也是一个未定义的引用。
猜你喜欢
  • 2010-10-09
  • 2014-07-18
  • 2016-04-18
  • 2011-01-23
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多