使用IBPP使用C ++创建Firebird数据库

时间:2017-09-21 06:48:47

标签: c++ firebird

我目前正在尝试使用C ++创建Firebird数据库。 Firebird安装在我的电脑上。 我的程序如下:

#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();

}

当我尝试编译代码时,收到以下消息:

  

C:\用户********** \应用程序数据\本地\ TEMP \ cc2Zhdj3.o:********** CPP :(文本$ _ZN4IBPP15DatabaseFactoryERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7 _ [__ ZN4IBPP15DatabaseFactoryERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7 _] +。 0xaa):未定义引用`IBPP :: DatabaseFactory(std :: __ cxx11 :: basic_string,std :: allocator&gt; const&amp;,std :: __ cxx11 :: basic_string,std :: allocator&gt; const&amp;,std :: __ cxx11 :: basic_string,std :: allocator&gt; const&amp;,std :: __ cxx11 :: basic_string,std :: allocator&gt; const&amp;,std :: __ cxx11 :: basic_string,std :: allocator&gt; const&amp;,std :: __cxx11 :: basic_string,std :: allocator&gt; const&amp;,std :: __ cxx11 :: basic_string,std :: allocator&gt; const&amp;)&#39; collect2.exe:错误:ld返回1退出状态

有谁知道我做错了什么?

3 个答案:

答案 0 :(得分:1)

正如WhozCraig所述,您可能没有链接Firebird共享库。如果使用GCC尝试添加链接选项-libpp,如果您使用的是MSVC,只需将IBPP .cpp文件添加到项目中或创建一个静态库并与之链接。

答案 1 :(得分:0)

这是错误的:

#define IBPP_WINDOWS = true

应该是:

#define IBPP_WINDOWS

答案 2 :(得分:0)

您可能已下载并解压缩文件夹ibpp-2-5-3-1-src。在那里你应该找到包含文件all_in_one.cpp的文件夹核心。 只需在文件(all_in_one.cpp)所在的路径的剩余部分插入#include "C:\remaining_path\ibpp-2-5-3-1-src\core\all_in_one.cpp",就可以在程序中包含此文件。 您不必另外包含ibpp标头,因为它已经包含在all_in_one文件中。

这样可以解决问题:)

顺便说一下:别介意在这里逗弄你的一堆骚动。他们似乎是完全的奴隶,只是做了权威告诉他们的,从来没有学会自己思考。我猜他们只是嫉妒,所以我说:没关系,你会去的地方!