【问题标题】:Libharu creates errors about pngtest.c with windows.hLibharu 使用 windows.h 创建有关 pngtest.c 的错误
【发布时间】:2012-12-27 17:57:47
【问题描述】:

我遇到了一个易于解决的 libharu 问题,我问过 here;但不幸的是,当我解决第一个问题时,出现了第二个问题。
我在 Windows 7 中使用带有 GNU GCC C++ 编译器 (MingGW) 的 Codeblocks IDE。我编译了 libharu.a、libpng.a 和 zlib.a,并以正确的顺序将它们链接到我的主项目。因此,它编译得很好并创建了我的 .pdf
但是,当我添加

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

对于我的代码,它给出了大量与 libpng 相关的错误,特别是 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'

感谢您的帮助。

【问题讨论】:

    标签: c++ windows winapi libpng libharu


    【解决方案1】:

    要在使用 gcc 时删除控制台,只需将 -mwindows 添加到链接器标志。 WinMain() 不是必需的。

    【讨论】:

    • 现在我看到问题来自 pngtest.o。删除它,它真的只是为了测试。它本身就是一个应用程序,所以现在你有 2 个不同的 main() 函数。
    猜你喜欢
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2016-05-17
    相关资源
    最近更新 更多