如题,编译了iconv的lib库,在编译另一个依赖于此lib的项目时出现无法解析的外部符号。
先说结论,【warning C4273: “locale_charset”: dll 链接不一致】是编译静态库时没有添加对应的宏导致的,编译时添上宏即可。
定位对应宏的步骤如下:
首先根据使用时报的错找到无法解析的符号locale_charset
搜索iconv源码,在头文件中找到locale_charset函数
搜索iconv源码,找到LIBCHARSET_DLL_EXPORTED宏
如图,仅有在定义LIBCHARSET_STATIC后,才会定义为静态库导出,由此在项目属性-->C/C++-->预处理器-->预处理器定义中添加上LIBCHARSET_STATIC宏,重新编译静态库,替换之前使用的库即可解决问题了。