VS2010 x86调试模式编译Connector 1.1.7的配置问题排查
解决VS2010 x86调试模式编译Connector 1.1.7的问题
我来帮你一步步搞定这些问题,咱们逐个击破:
1. 解决strtold、strtoll等函数未找到的问题
VS2010的x86环境对C99标准的部分函数支持有限,这些函数默认不会被编译器暴露出来。你需要在CMake命令中添加编译宏定义,强制启用这些函数的支持:
- 添加
-D_CRT_NONSTDC_NO_DEPRECATE和-D_CRT_NONSTDC_NO_WARNINGS,告诉编译器不要隐藏这些非标准C函数 - 同时添加
-D__STDC_WANT_SECURE_LIB__=0,避免安全库的定义影响这些函数的可见性
2. 处理CMake CMP0022策略警告
CMP0022是CMake关于INTERFACE_LINK_LIBRARIES属性的策略,旧版本默认使用旧行为会触发警告。你可以在CMake命令中显式设置使用新策略,直接消除警告:
- 添加
-DCMAKE_POLICY_DEFAULT_CMP0022=NEW
3. 确保生成.pdb调试文件
因为你需要调试模式下的pdb文件,必须明确指定CMake的构建类型为Debug,同时确保调试符号生成的配置正确:
- 添加
-DCMAKE_BUILD_TYPE=Debug - 另外,VS2010下可以添加
-DCMAKE_DEBUG_POSTFIX=d(可选,用于区分调试版库文件名)
完整的CMake命令
把这些配置整合起来,你需要执行的完整命令应该是:
cmake -G "Visual Studio 10 2010" -A Win32 -DCMAKE_BUILD_TYPE=Debug -DMYSQL_DIR="C:\Program Files (x86)\MySQL\MySQL Server 5.7" -DBOOST_INCLUDE_DIRS="C:\local\boost_1_61_0" -D_CRT_NONSTDC_NO_DEPRECATE=1 -D_CRT_NONSTDC_NO_WARNINGS=1 -D__STDC_WANT_SECURE_LIB__=0 -DCMAKE_POLICY_DEFAULT_CMP0022=NEW .
注意:
-A Win32是明确指定x86架构,避免VS默认选择x64,这对确保x86编译很关键。
额外检查项
- 确认MySQL Server 5.7的lib目录下有x86版本的库文件,毕竟你是x86编译,别不小心用了x64的库
- 确保Boost 1.61.0的路径正确,并且包含了Connector需要的头文件(Boost 1.61.0对Connector 1.1.7是完全兼容的)
内容的提问来源于stack exchange,提问作者GiPag
相关产品推荐
相关产品推荐

