Code::Blocks是一款出色的跨平台IDE,是用跨平台的語言wxWidgets所寫的,由於wxWidgets並不像Java一樣,有Virtual Machine,是可以build成原生的執行檔執行的,所以執行的速度會快很多。由於最近想寫看看Code::Blocks的PlugIn,所以就試著build CB的source code看看,用CB來build CB倒是挺有趣的。
30 8月 2012
23 8月 2012
[VisualStudio] Generate Assembly result file
VisualStudio在compile檔案過後,預設是不會產生assembly file的,但是有時候會想看看compile過後assembly code長怎麼樣,當project的Optimization有enabled的話,一樣的code在不同的Optimization level會有不一樣的結果,這就是VC對code優化處理。
要打開assember output的話,先進入Project Property Page(在project上點右鍵,選propertys)
以VS2008為例,在 Configuration Properties | C/C++ | Output Files 裡
選擇 Assembler Output ,有一些選項可以選
最後就可以在指定的輸出路徑(ASM List Location)裡,找到各個檔案的*.asm or *.cod,打開來就可以研究一下裡面的assembly code了~
更多詳細的設定介紹 - MSDN - /Fa /FA
要打開assember output的話,先進入Project Property Page(在project上點右鍵,選propertys)
以VS2008為例,在 Configuration Properties | C/C++ | Output Files 裡
選擇 Assembler Output ,有一些選項可以選
- Assembly-Only (輸出.asm檔)
- Assembly, Machine Code and Source (輸出.cod檔)
- Assembly With Machine Code (輸出.cod檔)
- Assembly With Source Code (輸出.asm檔)
可以選擇最詳細的Assembly, Machine Code and Source來看
最後就可以在指定的輸出路徑(ASM List Location)裡,找到各個檔案的*.asm or *.cod,打開來就可以研究一下裡面的assembly code了~
更多詳細的設定介紹 - MSDN - /Fa /FA
16 3月 2012
[Win32] Save Bitmap
Save Gdiplus::Bitmap
HRESULT GetEncoderClsid(const WCHAR* format, CLSID* pClsid) { /* format support : "image/png" "image/bmp" "image/gif" "image/jpeg" "image/tiff" */ UINT num = 0; // number of image encoders UINT size = 0; // size of the image encoder array in bytes GetImageEncodersSize(&num, &size); if(size == 0) return E_FAIL; // Failure ImageCodecInfo* pImageCodecInfo = NULL; pImageCodecInfo = (ImageCodecInfo*)(malloc(size)); if(pImageCodecInfo == NULL) return E_FAIL; // Failure GetImageEncoders(num, size, pImageCodecInfo); for(UINT j = 0; j < num; ++j) { if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 ) { *pClsid = pImageCodecInfo[j].Clsid; free(pImageCodecInfo); return S_OK; // Success } } free(pImageCodecInfo); return E_FAIL; } void SaveBitmap(Bitmap* bitmap) { // Get the CLSID of the JPEG encoder. CLSID clsid; GetEncoderClsid(L"image/jpeg", &clsid); bitmap.Save(L"C:\\test.jpg", &clsid, NULL); }
訂閱:
文章 (Atom)