在Ubuntu的D程序中使用Sqlite的最简单方法是什么?

Mic*_*ich 6 sqlite d

我想使用phobos.etc.c.sqlite3绑定.使用C编译器编译sqlite3.c以生成.o文件,然后将其与我的程序链接.

我应该使用哪个C编译器,以及哪些编译器标志?是否可以在一步中将sqlite3.o与DMD链接,而无需单独调用链接器?

或者还有其他更简单的方法吗?

答:如何在64位Ubuntu上使用D进行Sqlite

  1. 安装sqlite dev sudo apt-get install libsqlite3-dev

  2. dmd test.d -L-ldl -L/usr/lib/x86_64-linux-gnu/libsqlite3.a

test.d

import std.stdio, std.string, etc.c.sqlite3;

void main () {
    sqlite3* db;
    auto ret = sqlite3_open (toStringz("mydb.s3db"), &db);
    writeln (ret);
}
Run Code Online (Sandbox Code Playgroud)

由于sqlite3链接问题,需要-ldl开关

gmf*_*ett 10

只要安装了sqlite3开发包,就可以调用dmd test.d -L-lsqlite3- 不需要绝对路径.

一个不错的选择是libpragma:

pragma(lib, "sqlite3");

import std.stdio, std.string, etc.c.sqlite3;

void main () {
    sqlite3* db;
    auto ret = sqlite3_open (toStringz("mydb.s3db"), &db);
    writeln (ret);
}
Run Code Online (Sandbox Code Playgroud)

有了它,你可以说dmd test.d.

我无法重现您的问题-ldl,但也可以添加为pragma指令.


vin*_*nes 3

您可以将绑定与可用的sqlite库(当然是适当版本的)一起使用,而无需手动将其编译为目标文件。就像您在 C 中所做的那样:您需要添加#include <headers>并添加-llibrary到编译器标志中。这里同样的\xe2\x80\x94import和链接指令。

\n\n

编辑:

\n\n

在 Ubuntu 上你可以安装预编译的sqlite使用以下命令安装预编译版本:

\n\n
sudo apt-get install libsqlite3-dev\n
Run Code Online (Sandbox Code Playgroud)\n\n

另外,请参阅http://prowiki.org/wiki4d/wiki.cgi?DatabaseBindings#SQLite了解其他一些信息sqlite绑定变体。

\n