2017-09-21 2 views
1

Ich versuche derzeit, eine Firebird-Datenbank mit C++ zu erstellen. Firebird ist auf meinem Computer installiert. Mein Programm sieht wie folgt aus:Erstellen einer Firebird-Datenbank mit C++ mit IBPP

#define IBPP_WINDOWS = true 
#define IBPP_GCC = true 

#include "ibpp.h" 
#include <fstream> 
#include <iostream> 
#include <sstream> 
#include <vector> 
#include <iostream> 
#include <stdlib.h> 
#include <sstream> 
#include <cmath> 

using namespace std; 
using std::vector; 
using std::string; 
using std::ifstream; 
using std::ofstream; 
using std::getline; 
using std::cin; 
using std::cout; 
using std::endl; 
using std::istringstream; 

int main(int argc, char *argv[]) 
{ 
    std::string UserName = "SYSDBA"; 
    std::string Password = "**********"; 
    std::string ServerName = "localhost"; 
    char* DbName = (char *)"C:/Users/**********/Desktop/**********.fdb"; 

    IBPP::Database db = IBPP::DatabaseFactory(ServerName,DbName,UserName,Password); 

    db->Create(); 
    db->Connect(); 

} 

Wenn ich versuche, meinen Code zu kompilieren, ich die folgende Meldung:

C:\Users**********\AppData\Local\Temp\cc2Zhdj3.o:**********.cpp:(.text$_ZN4IBPP15DatabaseFactoryERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_[__ZN4IBPP15DatabaseFactoryERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_]+0xaa): undefined reference to `IBPP::DatabaseFactory(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)' collect2.exe: error: ld returned 1 exit status

Hat jemand eine Idee, was ich falsch gemacht habe?

+1

[Sie sind sehr wahrscheinlich nicht die entsprechende Libs auf Ihre Anwendung zu verknüpfen.] (Https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error- und-wie-mache-ich-fix). – WhozCraig

Antwort

0

Sie wahrscheinlich heruntergeladen und unzippped den Ordner ibpp-2-5-3-1-src. Dort sollten Sie den Ordnerkern finden, der die Datei all_in_one.cpp enthält. Fügen Sie diese Datei einfach in Ihr Programm ein, indem Sie #include "C:\remaining_path\ibpp-2-5-3-1-src\core\all_in_one.cpp" einfügen, wo Sie den restlichen Teil des Pfades einfügen müssen, in dem sich die Datei (all_in_one.cpp) befindet. Sie müssen den ibpp-Header nicht zusätzlich hinzufügen, da er bereits in der Datei all_in_one enthalten ist.

Dies wird den Trick :)

Und übrigens: Nie, dass Bündel von prats wohlgemerkt hier necken. Sie scheinen vollkommene Sklaven zu sein, indem sie genau das tun, was die Autorität ihnen sagt, und nie gelernt haben, für sich selbst zu denken. Ich schätze, sie sind nur eifersüchtig, also wie ich schon sagte: Es macht nichts, du wirst hingehen!

1

Wie WhozCraig erwähnt, Sie verknüpfen wahrscheinlich nicht mit Firebird gemeinsam genutzte Bibliothek. Wenn Sie GCC verwenden, versuchen Sie, die Verbindungsoption -libpp hinzuzufügen, falls Sie MSVC verwenden, fügen Sie einfach IBPP-CPP-Dateien in Ihr Projekt ein oder erstellen Sie eine statische Bibliothek und verknüpfen Sie diese.

+0

Ich tippte g ++ -libpp **********. Cpp im Befehlsfenster. Jetzt bekomme ich die folgende Fehlermeldung: Datei nicht erkannt: Dateiformat nicht erkannt collect2.exe: Fehler: ld zurückgegeben 1 Exit-Status –

+0

Versuchen Sie, Compilation und Linking-Prozess (z. B. 'g ++ -c file.cpp -o file.o'), dann 'g ++ file.o -libpp -o final.exe') – vasek

+0

Wie soll das funktionieren? Wenn ich es ohne die lib-Datei kompiliere, bekomme ich immer eine Fehlermeldung und keine .exe-Datei wird überhaupt erstellt ... –

0

Das ist falsch:

#define IBPP_WINDOWS = true 

Es sollte:

#define IBPP_WINDOWS 
Verwandte Themen