从wxWidgets和C++开始
Starting with wxWidgets and C++
我正在努力了解wxWidgets的实际工作方式。我想在OSX 10.11.1上构建一个C++GUI应用程序,只是为了学习C++。
现在我从中获得wxWidgetshttps://www.wxwidgets.org/downloads/我得到了Linux/OSX版本。
我提取了源代码并运行了./configure && make && make install
,正如我从这里的一个问题中看到的那样。
它似乎已经持续了一段时间,然后我得到了这个:
`In file included from ./include/wx/variant.h:401:
./include/wx/any.h:611:5: warning: expression with side effects will be evaluated despite being used as an operand to 'typeid' [-Wpotentially-evaluated-expression]
WX_DECLARE_ANY_VALUE_TYPE(wxAnyValueTypeImplVariantData)
^
./include/wx/any.h:167:25: note: expanded from macro 'WX_DECLARE_ANY_VALUE_TYPE'
return wxTypeId(*sm_instance.get()) == wxTypeId(*otherType);
^
./include/wx/typeinfo.h:84:47: note: expanded from macro 'wxTypeId'
#define wxTypeId(OBJ) wxTypeIdentifier(typeid(OBJ).name())
^
./src/osx/webview_webkit.mm:381:37: warning: incompatible pointer types sending 'WebViewLoadDelegate *' to parameter of type 'id<WebFrameLoadDelegate>' [-Wincompatible-pointer-types]
[m_webView setFrameLoadDelegate:loadDelegate];
^~~~~~~~~~~~
./src/osx/webview_webkit.mm:387:34: warning: incompatible pointer types sending 'WebViewPolicyDelegate *' to parameter of type 'id<WebPolicyDelegate>' [-Wincompatible-pointer-types]
[m_webView setPolicyDelegate:policyDelegate];
^~~~~~~~~~~~~~
./src/osx/webview_webkit.mm:392:30: warning: incompatible pointer types sending 'WebViewUIDelegate *' to parameter of type 'id<WKUIDelegate> _Nullable' [-Wincompatible-pointer-types]
[m_webView setUIDelegate:uiDelegate];
^~~~~~~~~~
./src/osx/webview_webkit.mm:464:34: warning: 'WKPreferences' may not respond to 'setUsesPageCache:'
[[m_webView preferences] setUsesPageCache:NO];
~~~~~~~~~~~~~~~~~~~~~~~ ^
./src/osx/webview_webkit.mm:466:34: warning: 'WKPreferences' may not respond to 'setUsesPageCache:'
[[m_webView preferences] setUsesPageCache:YES];
~~~~~~~~~~~~~~~~~~~~~~~ ^
./src/osx/webview_webkit.mm:936:25: error: cannot initialize a variable of type 'WebBackForwardList *' with an rvalue of type 'WKBackForwardList *'
WebBackForwardList* history = [m_webView backForwardList];
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/osx/webview_webkit.mm:954:25: error: cannot initialize a variable of type 'WebBackForwardList *' with an rvalue of type 'WKBackForwardList *'
WebBackForwardList* history = [m_webView backForwardList];
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
15 warnings and 2 errors generated.
make: *** [webviewdll_osx_webview_webkit.o] Error 1`
但它失败了。
我不知道该怎么修。
有没有更简单的替代方案我可以使用?
还有一个我似乎不明白的问题:
1-它说它是跨平台的。我的想法是,这样就会有一个源文件夹,在每个平台上以不同的方式编译,而不是每个平台都有源代码。
2-此外,它安装在哪里?它会成为我操作系统库的一部分吗?我可以在我编写的任何c++程序中使用它吗?
3-然后我如何将我的程序移动到另一台OSX机器?我是否必须构建一个独立的应用程序(如Java),或者该机器是否需要与我开发该程序的机器具有相同的wxWidgets版本?
这里有很多问题,最好分别问每个问题,但让我试着简单地解决所有问题。
您看到的问题是由于自上次wxWidgets发布以来OS X SDK中的不兼容更改造成的,如果您搜索wxTrac并发现此错误,您可能会发现这一点。正如你在那里看到的,它已经修复了很长一段时间,所以你所需要做的就是从GitHub获得最新版本。或者,您可以使用较旧的SDK进行构建,但不建议这样做。
下一篇:
- 它是跨平台的,因为您可以编写在多个平台上编译和工作的单一版本的代码。显然,完全避免特定于平台的代码是不可能的,wxWidgets只是为您封装它,这样您就不必编写它
- 默认情况下,它作为任何Unix库安装在
/usr/local
下,但在运行configure时可以使用--prefix
选项进行更改 - 您应该在程序中包含wxWidgets库。最简单的方法是静态地链接到它们。稍微涉及的是将共享库放在应用程序捆绑包中
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 如何从头开始创建 avi 文件?
- 为什么 -mmacosx-version-min=10.10 不阻止使用标记为从 10.11 开始的函数?
- 自一周开始以来的秒数?
- 一旦双簧管录制开始,主 UI 线程就会被阻止
- GStreamer在开始任何播放之前进行搜索
- 使 std::fstream 写入文件末尾,但从头开始读取
- 如何以毫秒为单位获取开始时间和 now() 之间的毫秒差异(以 C++为单位?
- 哪个C++规范开始支持 std::vector
- 如何继续读取不同功能中的文件,而不是从头开始再次读取文件?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 如何在调试中通过传递引用开始
- 如何使用 picojson.h 在 c++ 中从头开始创建 json 对象
- 从特定键开始遍历地图
- 列表的有效性在插入后开始迭代器
- 尝试从头开始实现Leetcode的FizzBuzz多线程问题。收到"libc++abi.dylib: terminating"错误
- 试图修复一个错误,该错误不会让我开始编程其余部分
- 甚至在开始执行之前出现分段错误
- 为什么 Glib::VariantBase::store 方法破坏了给定缓冲区的开始