【发布时间】:2015-10-05 11:22:12
【问题描述】:
我在我的项目中使用 MySQL 连接器/C++ 与 MySQL 数据库进行交互。该项目编译良好。但是,当我运行它时,我得到一个错误
Unhandled exception at at 0x000007FEFD30B16D in ProjectName.exe:
Microsoft C++ exception: std::bad_alloc at memory location 0x00000000036FC2A0.
在第一行使用数据库。在这种情况下,我正在执行一条 MySQL 语句
sql::Statement* stmt = mSqlCon->con->createStatement();
stmt->execute("CREATE TABLE IF NOT EXISTS ..."); // Unhandled exception
当我为 Release 编译时,一切正常,没有抛出任何错误。
我的环境:
- Windows 7、64 位
- Visual Studio Express 2012
可能相关的 Visual Studio 项目设置和库:
- 预处理器定义:
_DEBUG;_MBCS;_CRT_SECURE_NO_WARNINGS - 运行时库:
Multi-threaded Debug (/MTd) - 基本运行时检查:
Both (/RTC1, equiv. to /RTCsu) (/RTC1) - MySQL 连接器/C++ 1.1.6(正式版)
- Boost 版本 1.59.0
我的想法:
这个错误发生在我开始使用 boost 库之后。这需要更改一些项目设置,例如预处理器定义_DEBUG(无论如何都应该用于调试构建,但之前没有使用它来构建连接器)。 所以我认为问题在于在项目的调试版本中使用 MySQL Connector/C++ 的发布版本。 在发布版本中一切正常。但是,我找不到任何调试版本的连接器,也无法自己构建或使用调试库重新安装它...是否有其他解决方案可以解决我的问题(或者我搜索得不够好)?
我读到我的 MySQL 文件夹 C:\Program Files\MySQL\MySQL Connector C++ 1.1.6\lib 中应该有一个 debug 文件夹,但它只包含一个带有发布版本(我正在使用)的 opt 文件夹。
非常感谢任何帮助!
【问题讨论】:
标签: c++ mysql visual-studio-2012 mysql-connector