4

我正在尝试使用 MySQL C++ 连接器连接到数据库。我已经添加了库,并且源代码使用所有必要的#include 语句正确编译。我正在使用的代码如下:

#include <stdlib.h>
#include <iostream>

#include "mysql_connection.h"

#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>

using namespace std;

int main(void)
{
    using namespace sql;

    Driver *driver;
    Connection *con;

driver = get_driver_instance();
con = driver -> connect("tcp://127.0.0.1:3306/test", "test", "test");
}

代码取自示例,应该可以正常工作。我已经显着缩短了代码,因为它位于引发错误的最终“驱动程序->连接”行。我的错误信息如下:

*** glibc detected *** /home/username/NetBeansProjects/mysql/dist/Release/GNU-Linux-x86/mysql:
free(): invalid pointer: 0x091dd468 ***

我在 Linux Mint Lisa 上,运行最新版本的 MySQL 并使用 NetBeans 7.1 作为 IDE。如前所述,代码编译正确,并且发生在最后一条连接线上。对于其他连接机制的任何帮助或建议将不胜感激。


更新

这是定义连接的 Driver 类的代码

class CPPCONN_PUBLIC_FUNC Driver
{
protected:
virtual ~Driver() {}
public:
// Attempts to make a database connection to the given URL.

virtual Connection * connect(const sql::SQLString& hostName, const sql::SQLString& userName, const sql::SQLString& password) = 0;

virtual Connection * connect(ConnectOptionsMap & options) = 0;

...

那里没什么可看的……以我的拙见……

4

2 回答 2

3

我已经为 Ubuntu 12.04 找到了解决这个问题的方法,我花了大约 48 小时没有睡觉,但是好的,就这样吧。我确信此修复程序适用于其他版本的 Ubuntu。从http://www.sopcast.com/download/libstdcpp5.tgz下载 libstdc++.so.5 。您需要提取文件并将其放在 /usr/lib 中。

确保在使用 g++ 构建应用程序时添加 -llibstdc++.so.5(此链接 stdc++ v5)

然后谷歌“Connector c++ Ubuntu 12.04”并寻找构建并为你的 Arch 下载 .deb。

对于 Ubuntu 12.04,这里是 .debs 的 URL https://launchpad.net/ubuntu/precise/+source/mysql-connector-c++/+builds 选择你的架构,即。Amd64 并下载 Built Files 下的两个 .debs。使用包管理器打开并安装。您现在应该能够在没有问题的情况下运行您的应用程序。

编辑 您不需要链接 libstdc++.so.5,您可能必须在您的系统上,但在 Ubuntu 12.04 amd64 上不需要。

于 2012-05-12T10:40:30.047 回答
1

让您的 C++ 程序在 2 分钟内与 MySQL 对话!

注意:这适用于带有 MySQL(典型 LAMP 设置)的 Ubuntu 12.04 服务器(AWS EC2),不保证向后兼容性。

要从 C++ 程序访问 MySQL 数据库,您必须首先使用以下命令行安装一些 mysql 库文件

sudo apt-get install libmysqlclient-dev

在您将保存的同一目录中保存一个名为“mysql_config”的配置文件(并运行您的应用程序 - 让我们说“/temp”)

mysql_config --cflags
-I/usr/include/mysql  -DBIG_JOINS=1  -fno-strict-aliasing   -DUNIV_LINUX
mysql_config --libs
-Wl,-Bsymbolic-functions -rdynamic -L/usr/lib/mysql -lmysqlclient

编译你的 c++ 文件“myapp.cpp”,用

sudo g++ -o myapp $(mysql_config --cflags) myapp.cpp $(mysql_config --libs)

基于这个由Coding Friends编写的优秀功能示例

于 2012-09-11T19:40:48.810 回答