我無法執行一些winapi代碼。我不知道是因爲我錯過了編譯過程中的某些東西,或者測試程序是否錯誤;但是當我執行該程序時,位圖定義行給出段錯誤。嘗試執行MinGW編譯的C++ winapi測試程序的分段錯誤
這裏是測試程序
#include <windows.h>
#include <gdiplus.h>
int WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
Gdiplus::PixelFormat* pf = new Gdiplus::PixelFormat();
Gdiplus::Bitmap* bitmap = new Gdiplus::Bitmap(100, 100, *pf);
return 0;
}
,這裏是彙編指令:
> mingw32-g++ main.cpp -lgdiplus -o main.exe
當我執行,我有這樣的罰球:
Program received signal SIGSEGV, Segmentation fault.
0x00403da3 in Gdiplus::Image::Image (this=0x0, image=0x0, status=Gdiplus::Ok) at c:/mingw/include/gdiplus/gdiplusheaders.h:142
142 nativeImage(image), lastStatus(status) {}
我做了一些winapi教程,並創建了一個窗口之前,所以我認爲我的MinGW安裝沒有任何錯誤。
可能是什麼問題?
我不認爲'Gdiplus :: *的PixelFormat PF =新Gdiplus ::的PixelFormat();'是正確的。 'PixelFormat'只是一個整數,所以你最終調用'Gdiplus :: Bitmap'的時候是0.你應該傳入一個[defined pixels format constants](https://msdn.microsoft.com/ EN-US /庫/ ms534412(v = vs.85)的.aspx)。另外,你不必在C++中使用new。通常情況下,如果你根本沒有「新」,那會更好。 – user4581301
GDI +也需要顯式初始化。我不知道如何在C++中做到這一點。 – andlabs
Windows不會發出分段錯誤。什麼是您的運行時環境? – IInspectable