原创 通過識別Content-Length和Transfer-Encoding實現C++ socket正確接收HTTP數據

衆所周知,HTTP在運輸層是TCP協議,所以在socket編程中,一般是初始化socket,解析ip,connect,send,recv的步驟。 send請求頭倒是容易,但在recv時就會發生問題。 recv需要傳入一個接收大小,

原创 將GLFW窗口嵌入Win32 SDK窗口及其多線程渲染方法

這篇文章(MFC單文檔視圖中嵌入GLFW窗口)提到了glfw嵌入mfc的辦法,採用的查找進程PID再嵌入的方法,進程間通信採用UDP,略微繁瑣。 其實不必如此麻煩,SetParent直接就可以辦到。 先上最終效果,其中的三角形是實

原创 利用FFmpeg無損提取視頻中源音頻流

今天要從視頻中扒一個譜出來,想把音頻提取出來。有損提取方法很多了,利用格式工廠啊,視頻編輯軟件啊,開內錄啊很多方法。但是我想要的是無損提取。 1. MediaCoder 首先嚐試了MediaCoder中的“複製音頻流”選項,但是怎

原创 由於彙編單獨生成obj導致的編譯zlib-1.2.11中的minizip時出現LINK 2019,找不到match_init函數問題解決方案

爲了壓縮解壓zip,下載了zlib庫。庫用CMake生成vs 2019的sln,沒有問題。但是zlib本身壓縮得到的數據沒有zip文件頭,不能輸出當zip用。 不過zlib裏帶了minizip庫,可以實現壓縮到zip文件和從zip

原创 由於.manifest引起的VS2019編譯x64 ATL C++窗口程序時報錯“應用程序無法正常啓動0xc000007b”

今天把一個ATL C++程序改成64位,結果一編譯就報錯“應用程序無法正常啓動0xc000007b”。這種情況一般是鏈接庫的問題,用depends查看,發現一大堆 API-MS-WIN-***.dll 找不到。非常疑難雜症了。

原创 C++計算四則運算表達式程序

最近在學數據結構,剛學完Expression Tree,解答了我多年的疑惑。以前就想寫一個二十四點的小遊戲,計算機發4張牌,玩家在規定時間內想出4張牌任意四則運算後得到24的表達式。框架搭好,也可以發牌了,電腦怎麼答題可以遍歷所有

原创 解決帶清單文件(manifest)C程序移植到XP時無法顯示控件的問題

問題描述: VS2010編譯的帶manifest的C窗口程序,在XP上運行無法顯示控件 最近在學習純API Window程序寫作,在移植到低版本系統時遇到了問題。 現在把經驗總結一下: 1.想要不彈出缺少.dll鏈接庫的框,需要改變

原创 Win32 GDI中通過手動計算高斯模糊實現陰影效果

先說一句,Photoshop的圖層樣式中的**“陰影”,“外發光”**效果,實質上都是高斯模糊實現的。陰影效果是在圖層後偏移疊加(也就是平面投影)一個純黑的層,然後對RGB和alpha通道做高斯模糊。外發光效果是在圖層後疊加一個黃

原创 WAVE文件結構之疑問及對策

《Windows程序設計》及網絡上其他資料都定義WAVE格式類似如下: 但實際打開.wav文件如下: 第一,0010處定義的格式塊的大小,按照說明值應爲16,即0x10,但實際上我打開好幾個文件都是0x12。 第二,wf

原创 手把手教你用C++實現AES的128,192,256位加密以及5種分組模式(未完)

1.前言 你能打開這篇文章,說明你正在學習AES加密法,介紹我就幾句話帶過了,AES加密法是替代DES加密法而誕生的,在2002年,在5種候選加密法中被選中作爲美國的國家標準,其創始人爲兩個比利時人:Joan Daemen和Vin

原创 C編程中阻止程序退出的方法

點擊窗口X按鈕後,程序收到WM_CLOSE消息,此處可以攔截程序的退出。如果不做任何操作,DefWindowProc將返回WM_DESTROY消息,之後發送WM_QUIT消息。 參考這篇: WM_CLOSE、WM_DESTROY、WM_Q

原创 C++中thread調用“帶mutex的類”的成員函數報錯C2661:std::tuple解決方法

今天在做LeetCode的1114題《按序打印》,想在本地調試,寫了如下代碼: #include <vector> #include <thread> #include <mutex> #include <condition_va

原创 無法解析的外部符號 __imp__waveOutOpen解決方法

VS編譯時報錯:無法解析的外部符號 __imp__waveOutOpen 原因是waveOutOpen函數需要winmm.lib庫,加入鏈接庫即可。 點贊 收藏 分享 文章舉報

原创 C++中UTF-8, Unicode, GB2312轉換及有無BOM相關問題

UTF-8轉Unicode 首先,UTF-8和Unicode是有轉換關係的,我們假設UTF-8字符串沒有BOM。 wstring UTF8toUnicode(const string &input) { int state =

原创 由於換行引起的bison程序報錯ERROR: syntax error解決方法

最近在寫flex & bison程序,但是bison總是解析不正確,第一次運行yyparse()是正確的,但enter後再輸入,總會報錯ERROR: syntax error。改寫yyerror函數爲 yyerror(char *s)