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

Creating a Firebird database with C++ using IBPP

我目前正在尝试使用 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:\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

有谁知道我做错了什么吗?

正如 WhozCraig 所指出的,您可能不会 link 使用 Firebird 共享库。如果使用 GCC,请尝试添加 link 选项 -libpp,如果您使用的是 MSVC,只需将 IBPP .cpp 文件添加到您的项目中或创建一个静态库并使用它 link。

这是错误的:

#define IBPP_WINDOWS = true

应该是:

#define IBPP_WINDOWS

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

这样就可以了:)

顺便说一句:别介意那群混蛋在这里取笑你。他们似乎完全是奴隶,只是按照权威的吩咐去做,从来没有学会独立思考。我猜他们只是嫉妒,所以正如我所说:没关系,你会去的地方!