我這次要用Vue3+Websocket對接rouletteserver C++ Server~
封包要使用protobuff,比較方便啊!!
一開始我是去抓protobuff release版本 github連結(https://github.com/protocolbuffers/protobuf/releases)
這時候版本是 32.0-rc2~
抓了protobuf-32.0-rc2.zip和protoc-32.0-rc-2-win64.zip
前者是有source code~後者有protoc.exe
但是呢…搞了很久都沒辦法在vs2022專案中編譯過!!!
然後另尋辦法,使用vcpkg安裝protobuff,大概流程如下~
先在專案目錄下建立vcpkg.json,內容如下
1 | { |
然後執行vs2022的 工具=>命令列=>開發人員命令提示字元~
開啟一個黑色小視窗,然後輸入vcpkg install~~~
可有能會被停醒要開啟manifest!!!
在專案右鍵=>屬性=>vcpke中,調整成是,我印象中一開始是沒有vcpkg頁面的,大概是執行vcpkge install後出現的!?
然後Build成功了!!!!!!!!!!!!!大歡喜XDDDDDDDDDDDD
我的第一個message如下,在login.proto中
1 | syntax = "proto3"; |
使用結果是執行下面程式碼後…
1 | loginpackage::LoginResponse res; |
會印出
user=
是空值,沒有資料,我研究呢很久找不到問題0.0…明明設定了…
然後跑去protobuff git直接抓最新版,安裝CMake,Build了一個版本出來試試看~
但是執行上面空值程式碼還是空值!!!!
最後我發現是我亂複製dll到x64\Debug下面~
大概是因為一開始缺東缺西不知從哪邊複製的…
導致debug版本用錯dll,然後就string穩定空值,只有int等有效果~
所以最後可行流程是!!
- 建立vcpkg.json並用上面說的內容然後vcpkg install,builtin-baseline要去vcpkg git上面查~
- 不要自行新增其他include目錄和其他程式庫目錄,全部都交給vcpkg
- 不要亂複製dll檔案到執行目錄(x64\Debug),正常會自己產生
- debug版本要用debug版本dll,abseil_dll.dll,libprotobufd.dll,libprotobuf-lited.dll~
- release版本要用debug版本dll,abseil_dll.dll,libprotobuf.dll,libprotobuf-lite.dll~
然後就可以執行了!!
字串也不會很神奇的空值!!
順便提一下,vcpkg安裝的版本會比github上面的版本稍舊,大概是穩定版關係
這邊沒紀錄用CMake開vs2022專案,個人覺得直接用vcpkg比較快用方便就不說了~