我想使用phobos.etc.c.sqlite3绑定.使用C编译器编译sqlite3.c以生成.o文件,然后将其与我的程序链接.
我应该使用哪个C编译器,以及哪些编译器标志?是否可以在一步中将sqlite3.o与DMD链接,而无需单独调用链接器?
或者还有其他更简单的方法吗?
答:如何在64位Ubuntu上使用D进行Sqlite
安装sqlite dev sudo apt-get install libsqlite3-dev
编 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指令.
您可以将绑定与可用的sqlite库(当然是适当版本的)一起使用,而无需手动将其编译为目标文件。就像您在 C 中所做的那样:您需要添加#include <headers>并添加-llibrary到编译器标志中。这里同样的\xe2\x80\x94import和链接指令。
编辑:
\n\n在 Ubuntu 上你可以安装预编译的sqlite使用以下命令安装预编译版本:
sudo apt-get install libsqlite3-dev\nRun Code Online (Sandbox Code Playgroud)\n\n另外,请参阅http://prowiki.org/wiki4d/wiki.cgi?DatabaseBindings#SQLite了解其他一些信息sqlite绑定变体。