sql :: SQLString行为 [英] sql::SQLString behavior

查看:213
本文介绍了sql :: SQLString行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用带有sql::SQLString的mysqlcpp库,在CPP应用程序中出现奇怪的行为.当我从const charstd::string创建一个新的SQLString时,似乎构造函数的内容格式错误.

I get a strange behavior in my CPP application using the mysqlcpp library with sql::SQLString. When I create a ne SQLString, either from const char or std::string, it seems like the constructor malformes the content.

这是我的代码:

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时)时,主机名的内容完全是某些东西不同的 例如.

When I initialize a variable of the SQLString with this literal or from my settings class (std::string), I see, when setting a break point (at line sql::SQLString username), that the content of hostname is something completely different E.g.

realStr="\b=8";


但是,每次运行都不一样.


But this differs from run to run.

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

At first I used pre-build libraries (1.1.3, x32) and later I built it from source (Visual Studio 2012 Update 2). This resulted in the same behavior. Debug build treats the char literal in the right way, the release build not.

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

Can anyone give a hint what`s going wrong here?

调试链接选项:


/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版本重建后,一切都会按预期进行.

I found finally the solution, this behavior was caused through the binarys downloaded from mysql. After rebuild with my Visual Studio version everything works as intended.

这篇关于sql :: SQLString行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆