使用 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 文件中。
这样就可以了:)
顺便说一句:别介意那群混蛋在这里取笑你。他们似乎完全是奴隶,只是按照权威的吩咐去做,从来没有学会独立思考。我猜他们只是嫉妒,所以正如我所说:没关系,你会去的地方!
我目前正在尝试使用 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 文件中。
这样就可以了:)
顺便说一句:别介意那群混蛋在这里取笑你。他们似乎完全是奴隶,只是按照权威的吩咐去做,从来没有学会独立思考。我猜他们只是嫉妒,所以正如我所说:没关系,你会去的地方!