minigui起步

來源:互聯網
上載者:User

昨天把環境搭建好了,今天就開始編寫helloworld了。總體上很順利,但是還是出現了好幾個錯誤,感覺比作qt的時候順利多了,現在還對qt稀裡糊塗的。

 

照著實力程式我首先寫了這段代碼:

#include <stdio.h><br />#include <minigui/common.h><br />#include <minigui/minigui.h><br />#include <minigui/gdi.h><br />#include <minigui/window.h><br />static int HelloWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)<br />{<br />HDC hdc;<br />switch(message){<br />case MSG_PAINT:<br />hdc = BeginPaint (hWnd);<br />TextOut (hdc, 60, 60, "Hello world!");<br />EndPaint (hWnd, hdc);<br />return 0;<br />case MSG_CLOSE:<br />DestroyMainWindow (hWnd);<br />PostQuitMessage(hWnd);<br />return 0;<br />}<br />return DefaultMainWinProc(hWnd,message,wParam, lParam);<br />}<br />int MiniGUIMain (int argc,const char* argv[])<br />{<br />MSG Msg;<br />HWND hMainWnd;<br />MAINWINCREATE CreateInfo;<br />#ifdef _MGRM_PROCESSES<br />JoinLayer(NAME_DEF_LAYER , "helloworld,it's bloodowolf's world;", 0 , 0);<br />#endif<br />CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;<br />CreateInfo.dwExStyle = WS_EX_NONE;<br />CreateInfo.spCaption = "bloodwolf";<br />CreateInfo.hMenu = 0;<br />CreateInfo.hCursor = GetSystemCursor(0);<br />CreateInfo.hIcon = 0;<br />CreateInfo.MainWindowProc = HelloWinProc;<br />CreateInfo.lx = 0;<br />CreateInfo.ty = 0;<br />CreateInfo.rx = 240;<br />CreateInfo.by = 180;<br />CreateInfo.iBkColor = COLOR_lightwhite;<br />CreateInfo.dwAddData = 0;<br />CreateInfo.hHosting = HWND_DESKTOP;<br />hMainWnd = CreateMainWindow (&CreateInfo);<br />if (hMainWnd == HWND_INVALID)<br /> return -1;<br />ShowWindow (hMainWnd,SW_SHOWNORMAL);<br />while (GetMessage(&Msg, hMainWnd)) {<br />TranslateMessage (&Msg);<br />DispatchMessage(&Msg);<br />}<br />MainWindowThreadCleanup (hMainWnd);<br />return 0;<br />}<br />#ifndef _MGRM_PROCESSES<br />#include <minigui/dti.c><br />#endif

 

第一次編譯:gcc -o bloodwolf window.c -lminigui -ljpeg -lpng -lz

 

就拋出這麼多錯誤:

/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/crt1.o: In function `_start':
/build/buildd/eglibc-2.10.1/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'
/usr/local/lib/libminigui.so: undefined reference to `sem_init'
/usr/local/lib/libminigui.so: undefined reference to `pthread_key_create'
/usr/local/lib/libminigui.so: undefined reference to `sem_destroy'
/usr/local/lib/libminigui.so: undefined reference to `pthread_getspecific'
/usr/local/lib/libminigui.so: undefined reference to `pthread_create'
/usr/local/lib/libminigui.so: undefined reference to `pthread_cancel'
/usr/local/lib/libminigui.so: undefined reference to `pthread_key_delete'
/usr/local/lib/libminigui.so: undefined reference to `sem_post'
/usr/local/lib/libminigui.so: undefined reference to `sem_getvalue'
/usr/local/lib/libminigui.so: undefined reference to `pthread_setspecific'
/usr/local/lib/libminigui.so: undefined reference to `sem_wait'
/usr/local/lib/libminigui.so: undefined reference to `pthread_join'
collect2: ld returned 1 exit status

 

查了以下,似乎是沒加必要的編譯選項

 

 gcc -o bloodwolf window.c -lminigui -ljpeg -lpng -lz -lminigui  -lmgext -lpthread

 

這樣就可以了。不過還有個錯誤

/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/crt1.o: In function `_start':
/build/buildd/eglibc-2.10.1/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'

 

意思是未定義的main函數,進入點有問題,估計會是在int MiniGuiMain (int argc,const char* argv[])這裡出問題,看了半天,原來是這樣的

int MiniGUIMain (int argc,const char* argv[])。唉,終於告捷了,啟動qvfb,裡面出現了自己的第一個框框。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.