使用wxWidgets的种种问题

编译wxLua过程中./configure报错

------------------------------------------------------------------------

最近在琢磨着用lua做点什么,在其maillist中看到wxLua,一个把wxWidgets 库和lua绑定的项目,可以方便的使用lua写GUI。从http://wxlua.sourceforge.net/下载源码,在ubuntu9.04中编译安装。

系统中已经安装

wx2.8-doc      

wx2.8-examples 

wx2.8-headers  

wx2.8-i18n

libwxbase2.8-0

libwxbase2.8-dev

libwxgtk2.8-0

libwxgtk2.8-dev

但是在wxLua目录下执行./configure时不能通过,显示如下错误

 

同时

使用codebloks创建的wxWidgets 项目时也发生编译不能通过的问题,错误提示一些类型窗口类型未定义

 

解决===>>>

原因是安装后wx-config默认使用wxbase,wxUSE_GUI=0.

因此,使用 sudo update-alternatives --config wx-config 命令,选择/usr/lib/wx/config/gtk2-unicode-debug-2.8即可。

 

附update-alternatives命令的一些说明

来源:http://www.blogjava.net/shaofan/archive/2006/12/25/89801.html

Ubuntu/Debian中的update-alternative用来对系统中不同版本的同个软件进行管理。
比如,系统中可能装有GNU的Java编译器,和SUN的Java编译器。可以用update-alternatives来设置当前使用它们中的哪一个。

它的原理是在/usr/bin中建立一个link,指向/etc/alternatives中的一个文件,而些文件又是一个link,指向当前使用的命令。比如java命令,查看如下:

 $ which java
/usr/bin/java
$ ls -l /usr/bin/java
lrwxrwxrwx /usr/bin/java -> /etc/alternatives/java
$ ls -l /etc/alternatives/java
lrwxrwxrwx /etc/alternatives/java -> /usr/lib/j2re1.5-sun/bin/java
$ ls -l /usr/lib/j2re1.5-sun/bin/java
-rwxr-xr-x /usr/lib/j2re1.5-sun/bin/java

参数--display可以某个软件的当前配置,如:

 $ /usr/sbin/update-alternatives --display java
java - status is auto.
link currently points to /usr/lib/j2re1.5-sun/bin/java
/usr/lib/kaffe/bin/java - priority 300
slave java.1.gz: /usr/share/man/man1/java.kaffe.1.gz
/usr/lib/j2re1.5-sun/bin/java - priority 315
slave java.1.gz: /usr/lib/j2re1.5-sun/man/man1/java.1.gz
Current `best' version is /usr/lib/j2re1.5-sun/bin/java.

status有auto和manual两种。一旦用户更改了系统的默认设置,它就变为manual。在auto的状态下,系统会根据几套配置的priority来判断当前应该使用哪套配置。

每 套配置可以设定多个link,它们被称为slave。上面的例子中,有两套java的配置。一套是/usr/lib/kafe/bin/java,另一套 是/usr/lib/j2re1.5-sun/bin/java,它们各有一个slave。在些例中这些slave设置的是java命令的 manual。当更改了配置时,用man命令查看的帮助也会相应更改。

参数--config可以用来更改当前的配置。

 $ sudo /usr/sbin/update-alternatives --config java 
There are 2 alternatives which provide `java'.
Selection Alternative
-----------------------------------------------
1 /usr/lib/kaffe/bin/java
*+ 2 /usr/lib/j2re1.5-sun/bin/java
Press enter to keep the default*, or type selection number: 1
Using `/usr/lib/kaffe/bin/java' to provide `java'.

参数--install用来设置一套新的配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用wxWidgets调用RESTful接口可以通过以下步骤实现: 1. 在代码中引入curl库,可以使用以下代码: ``` #include <curl/curl.h> ``` 2. 创建一个CurlHandle类,用于处理curl库的初始化和请求。以下是一个简单的CurlHandle类的示例代码: ``` class CurlHandle { public: CurlHandle() { curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); } ~CurlHandle() { curl_easy_cleanup(curl); curl_global_cleanup(); } CURL* get() { return curl; } private: CURL* curl; }; ``` 3. 创建一个HTTPRequest类,用于封装http请求。以下是一个简单的HTTPRequest类的示例代码: ``` class HTTPRequest { public: HTTPRequest(const std::string& url) { curl_easy_setopt(curl.get(), CURLOPT_URL, url.c_str()); } void setHeader(const std::string& header) { headers = curl_slist_append(headers, header.c_str()); curl_easy_setopt(curl.get(), CURLOPT_HTTPHEADER, headers); } void setMethod(const std::string& method) { curl_easy_setopt(curl.get(), CURLOPT_CUSTOMREQUEST, method.c_str()); } void setBody(const std::string& body) { curl_easy_setopt(curl.get(), CURLOPT_POSTFIELDS, body.c_str()); } CURLcode perform() { return curl_easy_perform(curl.get()); } private: CurlHandle curl; struct curl_slist* headers = nullptr; }; ``` 4. 在wxWidgets的GUI代码中创建一个按钮,并为其添加一个事件处理程序。在事件处理程序中,创建一个HTTPRequest对象,并设置请求的URL、header、method和body,并执行请求。以下是一个简单的事件处理程序的示例代码: ``` void MyFrame::OnButtonClicked(wxCommandEvent& event) { HTTPRequest request("http://localhost:8080/test"); request.setHeader("Content-Type: application/json"); request.setMethod("POST"); request.setBody("{\"name\": \"test\"}"); CURLcode res = request.perform(); if (res != CURLE_OK) { wxMessageBox("Error: " + std::string(curl_easy_strerror(res))); } } ``` 通过以上步骤,您就可以使用wxWidgets调用RESTful接口了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值