gpt4 book ai didi

libpng - libpng中 Unresolved external png_set_longjmp_fn

转载 作者:行者123 更新时间:2023-12-04 13:24:42 27 4
gpt4 key购买 nike

从libpng13.dll升级到版本1.5后,动态加载libpng.dll时,编译器开始报告此未解析的外部文件:png_set_longjmp_fn

怎么会来,我该如何解决?

最佳答案

该库已更改为更好地隐藏内部结构。因此,您需要做的是:

typedef jmp_buf* (*png_set_longjmp_fnPtr)(png_structp png_ptr, png_longjmp_ptr longjmp_fn, size_t jmp_buf_size);

png_set_longjmp_fnPtr mypng_set_longjmp_fnPtr = 0;

然后,当您动态地执行LoadLibrary时,请执行以下操作:
mypng_set_longjmp_fnPtr = (png_set_longjmp_fnPtr) GetProcAddress(hpngdll, "png_set_longjmp_fn");

extern "C"
{
jmp_buf* png_set_longjmp_fn(png_structp png_ptr, png_longjmp_ptr longjmp_fn, size_t jmp_buf_size)
{
if (mypng_set_longjmp_fnPtr)
{
return (*mypng_set_longjmp_fnPtr)(png_ptr, longjmp_fn, jmp_buf_size);
}
return 0;
}
}

导致 Unresolved external 问题的以下代码现在将再次正常运行:
if (setjmp(png_jmpbuf(png_ptr)))
{

我在这里发布了此信息,因为找不到其他位置。我用谷歌搜索了这个问题,发现其他人也遇到了同样的问题,但是没有解决方案,所以他们只是再次降级为旧版本的libpng。所以我想我将其发布在这里。

关于libpng - libpng中 Unresolved external png_set_longjmp_fn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5190554/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com