RCF-3.3.470调用RcfInit函数时出现配置不匹配链接错误求助
解决RCF配置不匹配导致的链接错误
全局统一编译宏配置
客户端、服务器的所有代码编译时,必须全局定义对应功能的启用宏,不能仅在部分文件中设置:- 文件传输:
RCF_ENABLE_FILE_TRANSFER=1 - 内部序列化:
RCF_ENABLE_INTERNAL_SERIALIZATION=1 - Protobuf支持:
RCF_ENABLE_PROTOBUF=1
可通过Makefile的CXXFLAGS参数、IDE预编译宏设置等方式全局传入这些宏。
- 文件传输:
重新编译RCF库
当前系统中的librcf.so是默认配置<1,0,0,1>,不包含所需功能,必须重新编译RCF-2.0源码:
编译库时带上上述三个宏,生成对应<1,0,1,1>配置的库文件,示例命令:make CXXFLAGS="-DRCF_ENABLE_FILE_TRANSFER=1 -DRCF_ENABLE_INTERNAL_SERIALIZATION=1 -DRCF_ENABLE_PROTOBUF=1"编译完成后,替换系统原有库,或者在项目编译时指定新库的路径。
清理项目编译残留并重新编译
删除项目的中间编译文件(如obj目录、CMakeCache.txt等),避免旧配置的编译残留干扰。之后重新编译客户端和服务器代码,确保链接的是新编译的RCF库。验证符号匹配
可以通过符号表检查新库是否包含所需符号:nm -D librcf.so | grep RcfInit.*RcfConfigurationDetectMismatches<1,0,1,1>若能找到对应符号,说明库编译正确,重新链接即可解决问题。
内容的提问来源于stack exchange,提问作者suneet saini
相关产品推荐
相关产品推荐

