zlib - 链接名为'_dist_code'的全局变量:符号乘法定义

时间:2017-08-30 07:59:59

标签: c opencv

我正在尝试从使用交叉编译c,c ++库(emscripten)创建的构建中安装OpenCV。

我遇到过这个网站,它指出了与zlib类似的问题,同时在Android上包含了外部库。 http://www.shiva-engine.com/forum/viewtopic.php?f=76&t=27858

他提到了一个冲突符号列表 -

z_errmsg
zcfree
zcalloc
_tr_init
_tr_tally
_length_code
_dist_code
_tr_align
_tr_stored_block
_tr_flush_block
inflate_table
inflate_copyright

该错误提到了为上述变量定义的全局变量。

上面的链接告诉我更改.h文件中的变量名称并将其称为脏黑客。

我试图在tree.h文件中更改变量名。还尝试根据此creating global variables causes linker error在名称前添加extern。但错误只是更改为Linking globals named 'my_new_variable_name'或者extern显示相同的错误。

const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] ={
..
..}

任何能够理解该链接或者我必须如何重命名或使用extern来解决问题并给我一个方向的人都会非常有帮助。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

对于zlib特有的这个错误,类似于他们在这里所说的http://www.shiva-engine.com/forum/viewtopic.php?f=76&t=27858,我发现了类似的东西。

似乎有三个文件,即trees.h,trees.c和deflate.h,其中定义了_dist_code。

作为仅针对这种情况的临时修复,我刚刚调用了所有变量以及.h个文件中的静态问题。

static uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] ={
..
..}  

以后出现更多问题我只是在OpenCV CmakeLists.txt文件中注释了sse的所有选项,以删除SIMD错误。

希望这有助于某人。欢迎任何更好的解决方案。