PCman 板


LINE

最近有對於PCman再嘗試一次建置程式專案, 在此滿之前我有試過去建置對更舊版本的PCman去建置, 當時最後只有在xp環境成功跑起來,但使用的是VC++ 6.0, 在對於C++還不熟的情況下,加上VC++ 6.0的古早簡易的功能, 不如後來的VS2013~2017強大的功能來的方便, 更難以對整個專案進行摸索,所以後來就沒再碰了 後來這篇出來之後 #1PFY6t8- (PCman) 覺得很厲害竟然讓他在2017又活起來了 就決定再來試試看 最近的嘗試有發在Github的Issue https://github.com/pcman-bbs/pcman-windows/issues/48 不過因為我是C++超不熟,所以都用拼湊的,所以單純再紀錄一下又讓他跑起來成功一次 之後如果有後續我可以再來分享看看 如果前幾個月活躍修改的大大願意撥空可以接受發問和提供簡單的教學,當然好, 不然我目前是新新手+自己google學習而已 當然C++博大精深,要一直探索問下去可能會太久 可能偶爾可以給發問回答一下我覺得也很好 -- 目前也是抽空來試的,不保證能經常花時間在這個issue,假若有空有閒就可以再試一下。 -- 以下複製貼上我在issue裡的貼文文字 name2name2 commented on 31 Mar ‧ Hi, recently I try to build this project again but got error, hope someone can help. I clone this project last few days, and have learned to install and use vcpkg , and installed many packages, also google keyword to solve many errors and problems such as error related to Project > Properties > Linker > Additional Dependencies settings. Now I got an error that after google I still can't solved: Severity Code Description Project File Line Suppression State Error LNK2019 unresolved external symbol "__declspec(dllimport) public: class Concurrency::task<class web::websockets::client::websocket_incoming_message> __thiscall web::websockets::client::details::websocket_client_task_impl::receive(void)" (__imp_?receive@websocket_client_task_impl@details@client@websockets@web@@QAE?AV?$task@Vwebsocket_incoming_message@client@websockets@web@@@Concurrency@@XZ) referenced in function "public: class Concurrency::task<class web::websockets::client::websocket_incoming_message> __thiscall web::websockets::client::websocket_client::receive(void)" (?receive@websocket_client@client@websockets@web@@QAE?AV?$task@Vwebsocket_incoming_message@client@websockets@web@@@Concurrency@@XZ) Combo \pcman-windows\Combo\Websocket.obj 1 Error LNK2019 unresolved external symbol "__declspec(dllimport) public: void __thiscall web::websockets::client::details::websocket_client_task_impl::close_pending_tasks_with_error(class web::websockets::client::websocket_exception const &)" (__imp_?close_pending_tasks_with_error@websocket_client_task_impl@details@client@websockets@web@@QAEXABVwebsocket_exception@345@@Z) referenced in function __catch$??R<lambda_6faaa49c60b61750ef16c4ff707b1ae7>@@QBE@V?$task@X@Concurrency@@@Z$0 Combo \pcman-windows\Combo\Websocket.obj 1 Error LNK2019 unresolved external symbol "__declspec(dllimport) public: __thiscall web::websockets::client::details::websocket_client_task_impl::websocket_client_task_impl(class web::websockets::client::websocket_client_config)" (__imp_??0websocket_client_task_impl@details@client@websockets@web@@QAE@Vwebsocket_client_config@234@@Z) referenced in function "public: __thiscall std::_Ref_count_obj<class web::websockets::client::details::websocket_client_task_impl>::_Ref_count_obj<class web::websockets::client::details::websocket_client_task_impl><class web::websockets::client::websocket_client_config>(class web::websockets::client::websocket_client_config &&)" (??$?0Vwebsocket_client_config@client@websockets@web@@@?$_Ref_count_obj@Vwebsocket_client_task_impl@details@client@websockets@web@@@std@@QAE@$$QAVwebsocket_client_config@client@websockets@web@@@Z) Combo \pcman-windows\Combo\Websocket.obj 1 Error LNK2019 unresolved external symbol _CONF_modules_unload referenced in function "public: __thiscall boost::asio::ssl::detail::openssl_init_base::do_init::~do_init(void)" (??1do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) Combo \pcman-windows\Combo\Websocket.obj 1 Error LNK2019 unresolved external symbol _ERR_reason_error_string referenced in function "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall boost::asio::error::detail::ssl_category::message(int)const " (?message@ssl_category@detail@error@asio@boost@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) Combo \pcman-windows\Combo\Websocket.obj 1 I guess this error is related to cpprest because in Websocket.cpp it includes <cpprest/ws_client.h>, but I have add lib cpprest_2_10.lib to Linker > Additional Dependencies but still show these errors. How to solve the Error? all the packages such as cpprest and boost are latest, installed by vcpkg. Can you build success recently? Thank you very much! --------------------------------------------------------------- name2name2 commented 22 minutes ago ‧ 對C++還不熟悉,這幾天又再發起一波嘗試,經過辛苦的網路搜尋,本來還想說已經盡力 了還是沒招@@,打算去相關看板發問了,好在後來有搜到關鍵的相關好心大大教學,總算 找到原來 unresolved external symbol 是一種固定常見的C++錯誤訊息,跟 C++ 有 declaration 但沒有definition 有關,另外也對於其他遇到的問題大量搜尋試誤解決, 也有初步開始使用CMake,目前拼拼湊湊已經可以成功讓Lite專案跑起來,但拼湊的過程 還差一點,websocket_client_task_impl 還沒透徹解決,差一點繼續摸索中。之後如果 真的完全跑起來了,可能打算看用什麼方式分享過程,讓新接觸的人也可以建置成功跑起 來,也可以跟目前repo的前面貢獻者交流一下我的方式和觀念有沒有可以改進的地方,我 算是還是C++新新手。但是要等我真的把最後的websocket_client_task_impl透徹解決, 還不確定能不能完全通這一段。不保證要花多少時間和最後能不能成功。我也是在很少可 用的時間裡抽出時間來試的,不保證能經常花時間在這個issue,假若有空有閒就可以再 試一下。 https://i.imgur.com/68zihze.png
--- -- 目前也是抽空來試的,不保證能經常花時間在這個issue,假若有空有閒就可以再試一下 -- --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.221.117 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PCman/M.1589986096.A.2BF.html ※ 編輯: name2name2 (223.140.221.117 臺灣), 05/20/2020 22:48:54
1F:推 holishing: 推 05/21 01:18
2F:推 holishing: 現在可以在 vs2017/vs2019 順利編譯了, 感謝原 po 的 05/23 22:47
3F:→ holishing: 文件整理,目前放在 05/23 22:48
4F:→ holishing: https://github.com/pcman-bbs/pcman-windows/wiki/ 05/23 22:48
5F:推 holishing: 這樣有 Windows 裝得了 Visual Studio 的人應都能試了 05/23 23:00
在這邊紀錄一下一開始自行找出的步驟, 其中包含CMake的使用,提供給對CMake有興趣的朋友參考 後面h大發現並整理出比較簡易操作的版本請參考wiki https://github.com/pcman-bbs/pcman-windows/wiki/Building_PCMan 以下是有使用CMake手動產生相關dll的建置PCMan步驟: PCMan程式專案建置和執行:逐步解說 ---------------------------------- 1. 安裝 Visual Studio 2017 (Community 即可) 。 請至官方網站下載: https://www.visualstudio.com/ 。 目前最新版本是Visual Studio 2019 應該也可以 。 安裝過程詢問到要安裝那些模組時,將C++有關的套件選項都勾起來安裝,依照安裝 程式導引安裝完成 2. 建立一個本機資料夾可以放git repository,以下將資料夾路徑代稱為 本機Git資料 3. git clone pcman-windows (https://github.com/pcman-bbs/pcman-windows.git)本機Git資料夾\pcman-windows 。 可以用git的clone指令,或者git的相關GUI軟體的clone功能 4. git clone vcpkg (https://github.com/Microsoft/vcpkg)本機git資料夾 \vcpkg 。 clone完成後,依照官方頁面教學,點兩下執行 vcpkg\bootstrap-vcpkg.bat 。 執行完成後會出現 vcpkg\vcpkg.exe 。 開啟cmd,執行 cd /d 本機Git資料夾\vcpkg,再執行 vcpkg integrate install 。 正確會印出訊息 Applied user-wide integration for this vcpkg root. 。 如果出現 Warning: integration was not applied ,則將整個vcpkg資料夾複 製到 C:\ ,再執行 cd /d C:\vcpkg ,再執行 vcpkg integrate install 。後面步驟的vcpkg路徑都要改成 C:\vcpkg [註1] 5. 使用vcpkg安裝套件 。 將cmd的路徑保持在 本機Git資料夾\vcpkg,以下開始用cmd安裝x86版本的 package 。 執行 vcpkg install cpprestsdk:x86-windows 。 執行 vcpkg install boost:x86-windows,裝的套件比較多,耐心等候大約半小時 安裝完成 。 執行 vcpkg install websocketpp:x86-windows 5. git clone cpprestsdk (https://github.com/microsoft/cpprestsdk)本機git資料夾\cpprestsdk 6. 安裝CMake 。 前往 https://cmake.org/download/ , 下載Latest Version中適用於Windows x64 的msi檔 。 執行msi檔,跟隨安裝程式導引完成CMake安裝 7. 取得cpprestsdk相關的dll lib檔 。 cmd 執行 cd /d 本機Git資料夾\cpprestsdk 。 執行 mkdir build.x32v141 [註2] 。 執行 cd build.x32v141 。 執行 "C:\Program Files\CMake\bin\cmake.exe" ../Release -A Win32 -DCMAKE_TOOLCHAIN_FILE=本機Git資料夾/vcpkg/scripts/buildsystems/vcpkg.cmake 。 正確完成會印出訊息 Build files have been written to: 本機Git資料夾 /cpprestsdk/build.x32v141 。 用 visual studio 開啟 \build.x32v141\cpprestsdk.sln 。 等待 visual studio 載入專案,左下角如有 Parsing Include ... Scanning Include ... 訊息,耐心等候直到左下角訊息停止變動,出現 就緒Ready 訊息 。 在 cpprest 專案 > 右鍵 > Build(建置) ,等待建置成功 。 建置成功後,會有一些.dll .lib等等檔案輸出到 \build.x32v141\Binaries\Debug,全部的檔案有cpprest141_2_10d.dll libcrypto-1_1.dll libssl-1_1.dll zlibd1.dll cpprest141_2_10d.exp cpprest141_2_10d.ilk cpprest141_2_10d.lib cpprest141_2_10d.pdb 。 將這些檔案複製到 本機Git資料夾\pcman-windows\Lite本機Git資料夾 \pcman-windows\Combo 8. 設定/建置PCMan專案 。 用 visual studio 開啟 本機Git資料夾\pcman-windows\PCMan.sln 。 開啟後等待 visual studio 載入,等到左下角訊息不再變動 。 在 Combo 專案 > 右鍵 > Properties(屬性) > Linker > All Options > 設定頁面 往上滾動 > Additional Dependencies > 在現有參數後方加上 ;本機Git資料夾 \pcman-windows\Combo\cpprest141_2_10d.lib , 小心不要覆蓋掉全部的值(發現蓋掉 全部的值可按Esc還原),是加在現有值的後方 。 在 Combo 專案 > 右鍵 > Build(建置) ,等待建置成功 。 在 Lite 專案 > 右鍵 > Properties(屬性) > Linker > All Options > 設定頁面 往上滾動 > Additional Dependencies > 在現有參數後方加上 ;本機Git資料夾 \pcman-windows\Lite\cpprest141_2_10d.lib , 小心不要覆蓋掉全部的值(發現蓋掉全 部的值可按Esc還原),是加在現有值的後方 。 在 Lite 專案 > 右鍵 > Build(建置) ,等待建置成功 9. 執行 PCMan 。 在 Lite 或 Combo 專案 > 右鍵 > Set as StartUp Project(設定為起始專案) > 按下 F5 , 即可執行出現PCMan的程式畫面 [註1] : 我原本先把vcpkg裝在E:\ ,然後跑integrate install會出現Warning: integration was not applied訊息,雖然看到Warning先繼續安裝相關的套件完成,安 裝完成後發現在visual studio裡面的cpp檔相關的#include還是會出現紅線錯誤。後來 搜尋 https://github.com/Microsoft/vcpkg/issues/5956 提到 I have reinstalled vcpkg directly to the c-drive and now it is working, even if I don't know why. Thank you for the support.,我改放到C:\底下,重新執行 integrate install就得到Applied user-wide integration for this vcpkg root.訊息,cpp檔裡面的 #include 也正常了。但是刪掉vcpkg再重裝在E:\,又沒問題了。 [註2] : 從 https://github.com/microsoft/cpprestsdk/wiki/How-to-build-for-Windows 學到,裡 面是x64,另外搜尋一些文章得知參數改成Win32就可以輸出為32位元的版本 ※ 編輯: name2name2 (36.226.13.6 臺灣), 05/24/2020 22:19:05
6F:推 holishing: 你上面那個步驟太麻煩了,不需要手動裝 cpprestsdk 05/25 04:15
7F:→ holishing: 反正已經在上面的 github wiki 連結整理了,就參考那個 05/25 04:16
8F:→ holishing: 理論上 vcpkg 都幫你完成一堆編譯步驟包括幫你跑完那些 05/25 04:17
9F:→ holishing: cmake 之類的編譯指令了 05/25 04:17
10F:推 holishing: 手動跑會造成設定過於複雜且容易出錯 05/25 04:28
11F:推 tonyhsie: 推 06/11 11:11
12F:推 OldYellowDog: 推 06/12 22:01







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP