1. 程式人生 > >vs2010 編譯mosquitto win32版本,開啟websockets,實現訊息推送

vs2010 編譯mosquitto win32版本,開啟websockets,實現訊息推送

廢話少說,開始~

1. 下載vs2010

我下了個旗艦版的,不過只有30天試用期,無妨,編譯就夠了。 
http://www.xpgod.com/soft/6637.html 
ps:之前用過vs2008去編譯,然後各種莫名其妙,如果有同學知道為什麼的,請留言。

2. 下需要的庫。

3. 安裝庫。

安裝檔案,原始碼檔案都放在C:\application\ 
1)先安裝vs2010,我是完全安裝,為了減少其他因素的影響。 
2)解壓c-ares,路徑為C:\application\c-ares-1.10.0 
3)解壓pthreads,然後把Pre-built.2裡include的檔案複製到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include 
Pre-built.2裡lib的檔案複製到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib 
4)安裝openssl,路徑為C:\OpenSSL-Win32 
5)安裝cmake,在開始選單生成了cmake-gui.exe程式。 
6)解壓libwebsocket,這是原始碼來的,需要vs2010編譯一下。 
開啟cmake-gui,如下

這裡寫圖片描述

在第三步的時候,彈出個對話方塊,選擇Visual Studio 10 2010即可,不要選擇64bit,切記。 
等一會兒,如下

這裡寫圖片描述

在C:\build-websocket就生成了vs的工程,找到libwebsockets.sln,雙擊開啟。

這裡寫圖片描述

這裡寫圖片描述

生成了比較重要的東西,後面要用到: 
C:\build-websocket\bin\MinSizeRel libeay32.dll ssleay32.dll websockets.dll 
C:\build-websocket\lib\MinSizeRel websockets.lib ZLIB.lib

7)解壓mosquitto,路徑為C:\application\mosquitto-1.4.2

4. 準備編譯mosquitto1.4.2

開啟cmake-gui,依次點1,2,3步,最後出現c-ares找不到

這裡寫圖片描述

然後配置相關選項,如下

這裡寫圖片描述

在這裡C:\build,用vs2010開啟mosquitto.sln,在“輸出”視窗發現好多錯誤

這裡寫圖片描述

原來是這些檔案裡面日期字串的星期幾導致的。於是把上面提到的檔案裡的亂碼刪掉,即把“周幾”刪掉,如:

這裡寫圖片描述

mosquittopp.vcxproj檔案中 報錯,名稱不能以“>”字元(十六進位制值 0x3E)開頭。後面還有幾處類似改法。

這裡寫圖片描述

重新開啟mosquitto.sln,專案右鍵開始生成。

報一推錯誤,大意是libwebsockcets的函式找不到。

這裡寫圖片描述

在解決方案資源管理器中找到mosquitto,右鍵,屬性。

這裡寫圖片描述

在開啟的mosquitto屬性頁裡,依次開啟配置屬性,連結器,輸入,附加依賴性。

這裡寫圖片描述

點選右邊的小三角,出來附加依賴項頁面。把最後的websockets.lib改成正確的lib檔案路徑。

這裡寫圖片描述

再專案右鍵重新編譯一下。

這裡寫圖片描述

如果遇到無法開啟mosquitto.lib,表明某個子工程需要依賴libmosquitto這個工程,在子工程右鍵“專案依賴項”裡面勾上libmosquitto就可以了。

如果遇到一堆紅色的錯誤,無法解析外部符號,就表明某些庫沒有引用,就要在附加依賴性新增對應的lib。或者複製到 
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib

如果遇到缺少某個.h標頭檔案的,需要把對應的標頭檔案複製到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include

此時主程式在: 
C:\build\src\MinSizeRel\mosquitto.exe 
C:\build\src\MinSizeRel\mosquitto_passwd.exe

C:\build\client\MinSizeRel\mosquitto_pub.exe 
C:\build\client\MinSizeRel\mosquitto_sub.exe

當然,這裡選擇Release也是可以的。

這裡寫圖片描述

如果想把生成的東西放在一起,就要填輸出路徑了。子工程右鍵屬性,配置屬性,常規,輸出目錄,改維c:\build\output\,其他子工程也一樣修改。

這裡寫圖片描述

改好後,重新生成。

此時,還是打不開主程式的,提示缺少websockets.lib, 
於是複製C:\build-websocket\lib\MinSizeRel\websockets.lib -> c:\build\output 
再把需要的w檔案搬過來,如下 
C:\application\mosquitto-1.4.2\mosquitto.conf -> c:\build\output 
C:\build-websocket\bin\MinSizeRel\libeay32.dll -> c:\build\output 
C:\build-websocket\bin\MinSizeRel\ssleay32.dll -> c:\build\output 
C:\pthreads\Pre-built.2\dll\x86\pthreadVC2.dll -> c:\build\output 
現在的目錄如下:開啟看看,可以執行。

這裡寫圖片描述

先把mosquitto.conf裡的Extra listeners開啟一下:listener 9001,protocol websockets 
測試一下mqtt和websockets方式,同時開啟的方式:

這裡寫圖片描述

如出現錯誤0x0000007d, 裝vcredist2010_x86.exe即可解決。

ps:在完成編譯之前遇到好多問題,vs2010報好多錯誤,解決不了,特別是最後編譯通過開啟exe就報應用程式不能正常啟動 (0xc000007b)。特別吐血,在絕望之際,查到64位編譯使用32位庫,或者32位編譯使用64位庫就回出現這種情況,於是我把原來cmake生成vs工程的配置由vs2010 x64,改成vs2010 x86,即後來vs2010主介面中間顯示WIN32,而不是x64,坑了好久,反正以後記住了,無論系統是不是64位的,一律使用32位庫和32位編譯。

到此,編譯完成,我會把編譯過程上傳到csdn,敬請關注。

補充資源連結:點我跳轉

相關推薦

vs2010 編譯mosquitto win32版本開啟websockets實現訊息

廢話少說,開始~ 1. 下載vs2010 我下了個旗艦版的,不過只有30天試用期,無妨,編譯就夠了。 http://www.xpgod.com/soft/6637.html  ps:之前用過vs2008去編譯,然後各種莫名其妙,如果有同學知道為什麼的,請留言。

vs2010 編譯mosquitto win32版本開啟websockets實現訊息

前言:因為之前沒有怎麼碰vs,只搞過cygwin,而cygwin上搞了好久都搞不定,以至於重新整理思路,這window上的版本應該怎麼去編譯。一直不知道怎麼搞,只能邊看其他教程,邊自己搞著,連續幾天下了班就可以研究編譯,特別是在開啟websockets的時候,加

jmeter測試介面跟jenkins整合實現自動郵件報告

jmeter我之前沒用過,後來學習測試api,發現很方便,因而做一個記錄。 在mac上安裝jmeter,首先需要在官網下載安裝外掛,然後配置環境,為了實現跟jenkins整合,也下載了ant。環境搭建好以後,應該是這樣的狀態。 export ANDROID_HOME=/U

未讀訊息(小紅點)前端與 RabbitMQ實時訊息實踐賊簡單~

前幾天粉絲群裡有個小夥伴問過:`web` 頁面的未讀訊息(小紅點)怎麼實現比較簡單,剛好本週手頭有類似的開發任務,索性就整理出來供小夥伴們參考,沒準哪天就能用得上呢。 之前在 [《springboot + rabbitmq 做智慧家居》](https://mp.weixin.qq.com/s?__biz=M

嵌入式Linux併發程式設計程序間通訊方式System V IPC訊息佇列開啟/建立msgget(), 傳送訊息msgsnd()格式接收訊息msgrcv()控制訊息佇列 msgctl()

文章目錄 1,訊息佇列 2,訊息佇列結構 3,訊息佇列使用步驟 3.1,開啟/建立訊息佇列 msgget() 3.1.1,開啟/建立訊息佇列---示例msgget() 3.2,向訊息佇列傳送訊息 msgs

centos7 中啟動chrome時無法啟動的問題開啟chrome沒反應自行關閉

[[email protected] bin]# /usr/bin/google-chrome [8239:8239:1230/172329.621009:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no

Android 7.0及其以上系統拍照開啟相簿裁剪報錯: android.os.FileUriExposedException: file:///storage/emulated/0/.....

全部程式碼:點選下載注意:如果你原先的應用的targetSdkVersion本來就小與27。那就拍照。什麼都不修改。也不會崩潰。但是、一旦你修改了你的targetSdkVersion為27.或者28。那你的應用就會報出這些問題。。具體原因。請自行百度下targetSdkVer

qt+opencv實現拍照開啟視訊影象處理操作

最近小博甚是墮落,在做深度學習好久沒有啥進展,哎,人生最苦莫過於程式設計師啊,今天這篇文章就來和大家一起學學QT吧,下面我用QT實現攝像頭的拍照,錄影,以及開啟視訊檔案,影象處理等操作 qt主要是用來做介面設計,opencv主要用來做演算法處理。程式開發之前我

android 實現mqtt訊息以及不停斷線重連的問題解決

前段時間專案用到mqtt的訊息推送,整理一下程式碼,程式碼的原型是網上找的,具體哪個地址已經忘記了。 程式碼的實現是新建了一個MyMqttService,全部功能都在裡面實現,包括連伺服器,斷線重連,訂閱訊息,處理訊息,釋出訊息等基本操作。 首先新增依賴: dependencies { &

技術乾貨:從零開始教你設計一個百萬級的訊息系統

1、點評 本文主要分享的是如何從零設計開發一箇中大型推送系統,因限於篇幅,文中有些鍵技術只能一筆帶過,建議有這方面興趣的讀者可以深入研究相關知識點,從而形成橫向知識體系。 本文適合有一定開發、架構經驗的後端程式設計師閱讀,文內個別技術點可能並非最佳實踐,但至少都是生動的實踐分享,至少能起到拋磚引玉的作用

O2OA整合政務釘釘實現人員同步、組織同步、單點登入(免登)、待辦待閱訊息

廢話不多說,直接上程式碼。 實現與政務釘釘的人員整合,待辦推送以及單點登入. 將次配置檔案由模版路徑拷貝到config目錄下. 配置檔名: zhengwuDingding.json 模版路徑:o2server/config/sample/zhengwuDingding.json 工作路徑:o

JAVA接收第三方的訊息物聯網的裝置端的訊息

裝置端,進行訊息推送,就是裝置的一些資訊,比如電量的值,和是否推送成功的狀態值 其推送的值的格式是json的格式,推送的標識的cmd,我這裡列子是cmd:"signal_test_status" 接收推送的程式碼是  */ @RestController("DeviceS

小程式訊息(含原始碼)java實現小程式springboot實現微信訊息

最近需要開發微信和小程式的推送功能,需要用java後臺實現推送,自己本身java和小程式都做,所以就自己動手實現下小程式的模版推送功能推送。 實現思路 1 小程式獲取使用者openid,收集formid傳給java後臺 2 java推送訊息給指定小程式使用

如何建立雲平臺聊天系統如何解決訊息困難問題

聊天業務描述: 使用者1發起聊天,將聊天資訊傳送到伺服器,伺服器將資訊轉發到使用者2 需要解決的問題: 1.如何判斷使用者是否線上(通過使用者滑鼠點選範圍進行判斷,若點選離開頁面則認為使用者的關注點不

訊息量突破50億談小米的高可用系統設計

小米推送是目前國內領先的推送服務提供商,主要為開發者提供快捷、準確、穩定的推送服務。目前日活躍裝置突破3億,日訊息量突破50億。本文將會介紹小米推送在提高系統可用性方面的一些經驗和教訓。 推送系統的高可用性以及如何提高可用性 緩衝機制與服務解耦 無狀

rabbitmq本身支援訊息不僅僅是poll模式

1.  poll方式接受訊息       QueueingConsumer consumer = new QueueingConsumer(channel);       channel.basicConsume(queueName, true, consumer);

訊息定時任務

package com.idorabox.manage.task; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Li

開發訊息服務基於Netty protobuf--fpush(含github原始碼)

開發訊息推送服務,基於Netty protobuf--fpush-含github原始碼 技術棧 程式碼簡介 系統架構 1.系統部署架構圖如下: 2. 移動客戶端鑑定許可權原理 3. server端推送

解決github 開啟、拉取、速度慢的問題

第一步:開啟ipaddress.com,查詢如下兩個域名,並分別記錄下其對應的ip: 1、github.com 2、github.global.ssl.fastly.net 第二步:更新hos

SignalR SelfHost實時訊息,整合到web中實現伺服器訊息

先前用過兩次SignalR,但是中途有段時間沒弄了,今天重新弄,發現已經忘得差不多了,做個筆記! 首先建立一個控制檯專案Nuget新增引用聯機搜尋:Microsoft.AspNet.SignalR.SelfHostMicrosoft.Owin.Cors 在Program.cs新增程式碼新增一個