Kha*_*ish 6 unresolved-external libpng
在动态加载libpng.dll时,从libpng13.dll升级到1.5版之后,编译器开始报告这个未解析的外部: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;
Run Code Online (Sandbox Code Playgroud)
然后,当您动态执行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;
}
}
Run Code Online (Sandbox Code Playgroud)
导致未解析的外部的以下代码现在将再次正常工作:
if (setjmp(png_jmpbuf(png_ptr)))
{
Run Code Online (Sandbox Code Playgroud)
我在这里发布了这个,因为我找不到其他位置.我用Google搜索了问题,发现其他人遇到了同样的问题,但没有解决方案,所以他们只是再降级到旧版本的libpng.所以我想我会在这里发布.
| 归档时间: |
|
| 查看次数: |
6199 次 |
| 最近记录: |