2013-01-13 41 views
1

我遇到了libharu的一個簡單可解的問題,我問了here;但不幸的是,當我解決第一個問題時,出現了第二個問題。
我在Windows 7中使用Codeblocks IDE和GNU GCC C++編譯器(MingGW)編譯libharu.a,libpng.a和zlib.a並將它們按正確的順序鏈接到我的主項目。因此,它編譯好,創建我的.PDF
然而,當我添加Libharu用windows.h創建關於pngtest.c的錯誤

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
LPSTR lpCmdLine, int nCmdShow) 
{ 
//Insert further code here... 
} 

到我的代碼它給libpng一起相關的錯誤的量,specificly pngtest.c。當我簡單地將「int WINAPI WinMain(...)」與「int main」互換時,一切運行正常(當然除了它在終端中運行)並創建正確的.pdf文件。
我的日誌文件:

C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x13b): undefined reference to `png_get_error_ptr' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x236): undefined reference to `png_create_read_struct' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x256): undefined reference to `png_set_error_fn' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x262): undefined reference to `png_create_info_struct' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x272): undefined reference to `png_create_info_struct' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x293): undefined reference to `png_set_read_fn' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x2b4): undefined reference to `png_set_read_status_fn' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x2c8): undefined reference to `png_read_info' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x314): undefined reference to `png_get_IHDR' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x33c): undefined reference to `png_get_PLTE' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x358): undefined reference to `png_get_rowbytes' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x368): undefined reference to `png_malloc' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x39c): undefined reference to `png_read_rows' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x3b7): undefined reference to `png_read_end' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x3cb): undefined reference to `png_free' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x3ef): undefined reference to `png_destroy_read_struct' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x54c): undefined reference to `png_set_PLTE' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x5a0): undefined reference to `png_set_IHDR' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x5bc): undefined reference to `png_set_read_status_fn' 
C:\Libs\libpng-1.5.13\libpng.a(pngtest.o):pngtest.c:(.text+0x11d): undefined reference to `png_error' 

謝謝您的幫助。

回答

0

要使用gcc刪除控制檯,只需將-mwindows添加到鏈接器標誌。 WinMain()不是必需的。

+0

現在我看到問題來自pngtest.o。 刪除它,它只是用於測試。 這是一個應用程序本身,所以現在你有2個不同的main()函數。 – ssbssa

+0

謝謝,它的工作原理。 –