SQLite3 & Eclipse --> Nicht definierter Verweis auf `sqlite3_open'



  • Hallo ich bin rel. neu mit C++ unterwegs und habe ein kleines Problem,
    und ich bin mir nicht so sicher wo das Problem Herkommt:

    also erstmal der rahmen:

    OS: Ubuntu 16.04 LTS
    IDE: Eclipse Neon C++ Edition

    Folgendes habe ich zusätzlich installiert:
    sudo apt-get install sqlite3
    sudo apt-get install libsqlite3-dev

    hier mal meine DB Klasse die ich mir geschrieben habe:

    /*
     * SQLiteDatabase.cpp
     *
     *  Created on: 21.03.2017
     *      Author: husker
     */
    
    #include "SQLiteDatabase.h"
    #include <sqlite3.h>
    
    SQLiteDatabase::SQLiteDatabase(std::string databasePath)
    {
    	this->databasePath = databasePath;
    	//Database = sqlite3*;
    	connect();
    
    }
    
    SQLiteDatabase::~SQLiteDatabase()
    {
    	disconnect();
    }
    
    /*
     * Setter:
     * =======================================================================================================================
     */
    void SQLiteDatabase::setDatabasePath(std::string databasePath)
    {
    	this->databasePath = databasePath;
    }
    
    int SQLiteDatabase::connect()
    {
    	if(sqlite3_open(databasePath.c_str(), &Database) != SQLITE_OK)
    	{
    		cerr << "Fehler beim Öffnen: " << sqlite3_errmsg(Database) << endl;
    		return 1;
    	}
    	else
    	{
    		cout << "Datenbankverbindung hergestellt!" << endl;
    		return 0;
    	}
    	;
    }
    
    int SQLiteDatabase::disconnect()
    {
    	sqlite3_close(Database);
    	return 0;
    }
    

    und die passende Header File:

    #pragma once
    
    #include <string>
    #include <iostream>
    #include <sqlite3.h>
    
    using namespace std;
    
    class SQLiteDatabase
    {
    	public:
    		SQLiteDatabase(std::string databasePath);
    		virtual ~SQLiteDatabase();
    
    		void setDatabasePath(std::string databasePath);
    		int connect();
    		int disconnect();
    
    	private:
    		std::string databasePath;
    		sqlite3* Database;
    };
    

    jetzt habe ich das Problem das Eclipse das Projekt einfach nicht bauen wiil
    und ich komme nicht drauf was ich falsch mache, habe ich eine einstellung bei Eclipse vergessen oder muss ich noch was installieren oder ist an meinem Code was Falsch?

    Eclipse meldet folgendes:
    `

    Description Resource Path Location Type

    Nicht definierter Verweis auf `sqlite3_close' SQLiteDatabase.cpp /w3ctosqlite/src line 50 C/C++ Problem

    Nicht definierter Verweis auf `sqlite3_errmsg' SQLiteDatabase.cpp /w3ctosqlite/src line 37 C/C++ Problem

    Nicht definierter Verweis auf `sqlite3_open' SQLiteDatabase.cpp /w3ctosqlite/src line 35 C/C++ Problem

    `

    habt ihr eine Idee was ich da machen kann?
    Danke schon einmal für die hilfe im vorraus

    PS:
    ich habe versucht das Problem zu googlen, das ich kaum was gefunden habe deutet ein wenig darauf hin das ich mich soo blöde anstelle das man das eigentlich nicht googlen müsste, oder das ich hier mal wieder einen Super sonderfall habe, ich tippe auf das erste 🙂



  • Ich tippe mal darauf, dass nicht Eclipse sich beschwert, sondern dein Linker und du entweder den Library Path zu der Sqlite3 Bibliothek nicht angegeben hast oder du hast dem Linker nicht gesagt gegen welche Bibliothek er linken soll.

    Wo man das bei Eclipse jetzt nochmal genau einstellt weiß ich nicht mehr, sollte man aber einfach googeln können.



  • Schlangenmensch schrieb:

    Ich tippe mal darauf, dass nicht Eclipse sich beschwert, sondern dein Linker und du entweder den Library Path zu der Sqlite3 Bibliothek nicht angegeben hast oder du hast dem Linker nicht gesagt gegen welche Bibliothek er linken soll.

    Wo man das bei Eclipse jetzt nochmal genau einstellt weiß ich nicht mehr, sollte man aber einfach googeln können.

    jupp genau das war das Problem 🙂
    bin durch das Video drauf gekommen, ist zwar Russisch (würde ich mal tippen)
    aber die Screens zeigen es genau was gemacht werden muss:

    [url]
    https://www.youtube.com/watch?v=Ezwug_wCx1o[/url]

    Danke !


Anmelden zum Antworten