最近需要使用libtommath库开发程序。
下载了libtommath库并使用VS生成了lib后。
在VS2013下使用该lib开发程序时,报错:
1>tommath.lib(bn_s_mp_rand_platform.obj) : error LNK2019: unresolved external symbol s_read_arc4random referenced in function s_mp_rand_platform
1>tommath.lib(bn_s_mp_rand_platform.obj) : error LNK2019: unresolved external symbol s_read_getrandom referenced in function s_mp_rand_platform
1>tommath.lib(bn_s_mp_rand_platform.obj) : error LNK2019: unresolved external symbol s_read_urandom referenced in function s_mp_rand_platform
1>tommath.lib(bn_s_mp_rand_platform.obj) : error LNK2019: unresolved external symbol s_read_ltm_rng referenced in function s_mp_rand_platform
百度了下,没找到答案,最后在libtommath源码中找到解决,这里记录一下。
在源码文件github.com/libtom/libtommath/blob/develop/s_mp_rand_platform.c的注释信息中可以找到答案,就是在编译libtommath时,不能在工程配置->C/C++->优化中将优化选项设置为“/Od”。我是修改成了“/O2”。
但修改优化选项就牵涉还要修改另外两个设置:
C/C++->常规->调试信息格式,不能用“/ZI”,我是修改为“/Zi”。
C/C++->代码生成->基本运行时检查,不能用“/RTC1”,我是修改为“默认值”。
如果嫌改这么多设置麻烦,可以直接把编译libtommath库的VS工程的配置项从Debug切换到Release就可以了。