我正在尝试用 C 语言编写一个小程序,该程序将打开并从 FreeBSD 9.1 系统上的 Berkeley 4.2 哈希数据库读取以进行测试,但我无法编译它。这是我第一次用 C 语言编写任何东西并从命令行编译,所以我可能遗漏了一件可以让它工作的东西,我不知道。
在到处搜索并查看 github 上的文档和源代码之后,这就是我到目前为止所得到的:
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <db.h>
int main()
{
DB * mydb;
u_int32_t open_flags = DB_RDONLY;
int ret;
ret = db_create(&mydb, NULL, 0);
if (ret != 0) {
printf("Error creating DB structure!");
return 1;
}
ret = mydb->open(mydb, NULL, "bsddb-py", NULL, DB_HASH, open_flags, 0);
if (ret != 0) {
printf("Error opening DB file!");
return 2;
}
mydb->close(mydb, 0);
}
我用这个编译:
cc -ldb-4.2 db_test.c
得到这个:
db_test.c: In function 'main':
db_test.c:20: error: 'DB_RDONLY' undeclared (first use in this function)
db_test.c:20: error: (Each undeclared identifier is reported only once
db_test.c:20: error: for each function it appears in.)
db_test.c:29: error: 'DB' has no member named 'open'
db_test.c:35: error: too many arguments to function 'mydb->close'
显然编译器挂断了使用 Berkeley 1.85(dbopen 等)并且它不会让步?