我在我的 CPP 应用程序中使用 mysqlcpp 库和sql::SQLString
. const char
当我从或创建一个新的 SQLString 时,std::string
构造函数似乎使内容格式错误。
这是我的代码:
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 的变量时,我看到,在设置断点(在 line 处sql::SQLString username
)时,主机名的内容是完全不同的,例如
realStr="\b=8";
但这因跑步而异。
起初我使用预构建库(1.1.3、x32),后来我从源代码构建它(Visual Studio 2012 Update 2)。这导致了相同的行为。调试构建以正确的方式处理 char 文字,而发布构建则不然。
谁能提示这里出了什么问题?
调试链接选项:
/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:提示 /NOLOGO /TLBID:1