c++ - sql::SQLString 行为

标签 c++ mysql string

我在使用 mysqlcpp 库和 sql::SQLString 的 CPP 应用程序中遇到了奇怪的行为。当我从 const charstd::string 创建一个新的 SQLString 时,构造函数似乎扭曲了内容。

这是我的代码:

sql::SQLString hostname("jp-sys3");

//sql::SQLString hostname = sql::SQLString(settings->database().hostname());

sql::SQLString username = sql::SQLString(settings->database().username());

sql::SQLString password = sql::SQLString(settings->database().password());

当我使用此文字或从我的设置类 (std::string) 初始化 SQLString 的变量时,我看到,在设置断点时(在 sql::SQLString username 行) ,主机名的内容完全不同 例如。

realStr="\b=8";

http://s24.postimg.org/w1ecbfbo5/breakpoint.png
但这因运行而异。

起初我使用预构建库(1.1.3,x32),后来我从源代码(Visual Studio 2012 Update 2)构建它。这导致了相同的行为。调试版本以正确的方式处理字 rune 字,而发布版本则不然。

任何人都可以提示这里出了什么问题吗?

调试链接选项:

/OUT:"D:\Projects\STGPanel\Debug\STGPanel.exe" /MANIFEST /NXCOMPAT /PDB:"D:\Projects\STGPanel\Debug\STGPanel.pdb" /DYNAMICBASE "SDL.lib" "SDLmain.lib" "SDL_ttf.lib" "mysqlcppconn.lib" "xerces-c_3.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X86 /INCREMENTAL:NO /PGD:"D:\Projects\STGPanel\Debug\STGPanel.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\STGPanel.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 

发布链接选项:

/OUT:"D:\Projects\STGPanel\Release\STGPanel.exe" /MANIFEST /LTCG /NXCOMPAT /PDB:"D:\Projects\STGPanel\Release\STGPanel.pdb" /DYNAMICBASE "SDL.lib" "SDLmain.lib" "SDL_ttf.lib" "mysqlcppconn.lib" "xerces-c_3.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X86 /OPT:REF /SAFESEH /PGD:"D:\Projects\STGPanel\Release\STGPanel.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Release\STGPanel.exe.intermediate.manifest" /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 

最佳答案

我终于找到了解决方案,这种行为是由从mysql下载的二进制文件引起的。使用我的 Visual Studio 版本重建后,一切都按预期运行。

关于c++ - sql::SQLString 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16853074/

相关文章:

c++ - 用g++编译多线程代码

c++ - 在函数中过滤 vector 并返回另一个包含过滤结果的 vector

MySQL 无法启动?

php - 基于具有空单元格的数据库创建表

mysql 连接两个索引需要很长时间!

java - String.trim() 不仅删除 Java 中的空格

java - 如何检查字符串包含集合中的字符串之一

c# - 字符串替换 C# 中的变音符号

c++ - GDB C++ 如何停止进入标准库

c++ - 为具有内部指针的对象实现 swap()