Ich versuche, den MySQL C++ Connector zu verwenden, um eine Verbindung zu einer Datenbank herzustellen. Ich habe die Bibliotheken hinzugefügt und der Quellcode kompiliert korrekt mit allen notwendigen # include-Anweisungen. Der Code, den ich verwende, ist der folgende:MySQL Connector C++ - ungültiger Zeiger
#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");
}
Der Code ist direkt aus den Beispielen genommen und sollte ordnungsgemäß funktionieren. Ich habe den Code deutlich verkürzt, wie es in der letzten "Treiber -> Verbindung" Zeile ist, wo der Fehler geworfen wird. Meine Fehlermeldung ist folgende:
*** glibc detected *** /home/username/NetBeansProjects/mysql/dist/Release/GNU-Linux-x86/mysql:
free(): invalid pointer: 0x091dd468 ***
ich auf Linux Mint bin Lisa, die neueste Version von MySQL läuft und mit NetBeans 7.1 als IDE. Wie erwähnt, kompiliert der Code korrekt, und es ist in dieser letzten Verbindungslinie, wo der Fehler auftritt. Jede Hilfe oder Empfehlungen für einen anderen Verbindungsmechanismus würden sehr geschätzt werden.
UPDATE
Hier ist der Code von der Treiberklasse, wo die Verbindung definiert ist
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;
...
nichts zu sehen ... in meiner bescheidenen Meinung nach ...
Es sieht aus, als ob ein Speicher free'd wurde und versucht dann wieder free'd werden, aber nicht, weil es nicht mehr zugeordnet. Kannst du wirklich nicht von dem Code, den du gepostet hast, den Rest posten oder einen Link zum Beispielcode setzen? – TomP89
Das ist der ganze Code! Ich poste den Code von der Seite mit dem Treiber -> connect-Funktion, aber das kommt direkt vom MySQL Connector-Entwicklungsteam, also bezweifle ich, dass es einen Fehler enthalten würde:/ –
Ist "get_driver_instance" Ihr Code oder ist es Teil von Connector? Wenn es Ihr ist, schreiben Sie _that_. – ildjarn