2007-02-16
ddbi的编译
关键字: D语言
刚刚接触D,本身功力又不深,所以只能写些应用级的东西,就当是学习笔记了。
ddbi是用D下的一套的数据库接口,支持: 详细介绍见项目主页 http://www.dsource.org/projects/ddbi
下载以后解压,根据说明先编译
dmd -run buildme.d all
提示链接时一大堆函数找不到,我用的是tango用黓认库,配置了半天相关参数,没用。
于是干脆用回phobos,再编译
提示找不到bud程序,我的bud文件名是build.exe,要解决有两个办法。
一是将build.exe更名为bud.exe,但是我用的IDE是poseidon,poseidon是调用build.exe进行编译,所以没用这个办法(后来发现当前版本的poseidon可以直接设定bud文件)。
第二个办法是找打开buildme.d找到
if (system("bud " ~ buildCommand)) 将其改为
if (system("build " ~ buildCommand))
再次编译,还是没通过!!
看提示是找不到win32\odbcinst.d,可以自己写,或者在dsource.org binding项目有个现成的win32项目。
下载解压,再编译,ok
不过提示两个模块要手工编译,不知道为什么,还望高人赐教。
ddbi是用D下的一套的数据库接口,支持: 详细介绍见项目主页 http://www.dsource.org/projects/ddbi
下载以后解压,根据说明先编译
dmd -run buildme.d all
提示链接时一大堆函数找不到,我用的是tango用黓认库,配置了半天相关参数,没用。
于是干脆用回phobos,再编译
提示找不到bud程序,我的bud文件名是build.exe,要解决有两个办法。
一是将build.exe更名为bud.exe,但是我用的IDE是poseidon,poseidon是调用build.exe进行编译,所以没用这个办法(后来发现当前版本的poseidon可以直接设定bud文件)。
第二个办法是找打开buildme.d找到
if (system("bud " ~ buildCommand)) 将其改为
if (system("build " ~ buildCommand))
再次编译,还是没通过!!
看提示是找不到win32\odbcinst.d,可以自己写,或者在dsource.org binding项目有个现成的win32项目。
下载解压,再编译,ok
不过提示两个模块要手工编译,不知道为什么,还望高人赐教。
评论
tomqyp
2007-04-07
对了,我试ddbi时试着用静态库结果提示要open ssl的几个库,一时打不到,能不能顺便提供。
heromyth
2007-04-07
不用收藏了。我刚刚编译了mysql-4.1.22的libmysql库,并且已将导入库进行了转换。可以 D 连接工具里直接使用,在 DDBI 里简单测试成功。这里可以下载:http://bitworld.ys168.com
tomqyp
2007-04-07
好详细,好藏,我的只改了几个用到的函数
heromyth
2007-04-06
引用
LIBRARY libmySQL
EXETYPE NT
SUBSYSTEM WINDOWS
EXPORTS
_myodbc_remove_escape@8 = myodbc_remove_escape
_mysql_affected_rows@4 = mysql_affected_rows
_mysql_change_user@16 = mysql_change_user
_mysql_character_set_name@4 = mysql_character_set_name
_mysql_close@4 = mysql_close
_mysql_connect@16 = mysql_connect
_mysql_create_db@8 = mysql_create_db
_mysql_data_seek@12 = mysql_data_seek
_mysql_debug@4 = mysql_debug
_mysql_drop_db@8 = mysql_drop_db
_mysql_dump_debug_info@4 = mysql_dump_debug_info
_mysql_eof@4 = mysql_eof
_mysql_errno@4 = mysql_errno
_mysql_error@4 = mysql_error
_mysql_escape_string@12 = mysql_escape_string
_mysql_fetch_field@4 = mysql_fetch_field
_mysql_fetch_field_direct@8 = mysql_fetch_field_direct
_mysql_fetch_fields@4 = mysql_fetch_fields
_mysql_fetch_lengths@4 = mysql_fetch_lengths
_mysql_fetch_row@4 = mysql_fetch_row
_mysql_field_count@4 = mysql_field_count
_mysql_field_seek@8 = mysql_field_seek
_mysql_field_tell@4 = mysql_field_tell
_mysql_free_result@4 = mysql_free_result
_mysql_get_client_info@0 = mysql_get_client_info
_mysql_get_host_info@4 = mysql_get_host_info
_mysql_get_proto_info@4 = mysql_get_proto_info
_mysql_get_server_info@4 = mysql_get_server_info
_mysql_info@4 = mysql_info
_mysql_init@4 = mysql_init
_mysql_insert_id@4 = mysql_insert_id
_mysql_kill@8 = mysql_kill
_mysql_list_dbs@8 = mysql_list_dbs
_mysql_list_fields@12 = mysql_list_fields
_mysql_list_processes@4 = mysql_list_processes
_mysql_list_tables@8 = mysql_list_tables
_mysql_num_fields@4 = mysql_num_fields
_mysql_num_rows@4 = mysql_num_rows
_mysql_odbc_escape_string@28 = mysql_odbc_escape_string
_mysql_options@12 = mysql_options
_mysql_ping@4 = mysql_ping
_mysql_port = mysql_port
_mysql_query@8 = mysql_query
_mysql_read_query_result@4 = mysql_read_query_result
_mysql_real_connect@32 = mysql_real_connect
_mysql_real_escape_string@16 = mysql_real_escape_string
_mysql_real_query@12 = mysql_real_query
_mysql_refresh@8 = mysql_refresh
_mysql_row_seek@8 = mysql_refresh
_mysql_row_tell@4 = mysql_row_tell
_mysql_select_db@8 = mysql_select_db
_mysql_send_query@12 = mysql_send_query
_mysql_shutdown@4 = mysql_shutdown
_mysql_stat@4 = mysql_stat
_mysql_store_result@4 = mysql_store_result
_mysql_thread_id@4 = mysql_thread_id
_mysql_thread_safe@0 = mysql_thread_safe
_mysql_unix_port = mysql_unix_port
_mysql_use_result@4 = mysql_use_result
qiezi
2007-04-06
你这个def文件哪找的?贴一个出来用用。。。
qiezi
2007-04-06
使用mysql里面的dll,用implib导出.def文件,修改名称再用implib导出lib即可。mysql的dll用的是stdcall,它导出dll时把名称重定义过了,所以要这么麻烦地改回去。
heromyth
2007-04-06
用vc一直没成功编译mysql,因此无法得到其导入库,也就无法测试coff2omf是否起作用。
我是直接在网上找到的一个关于mysql的def文件文件,并生成导入库。测试基本成功。
另外也成功测试了SQLite。其它的数据库由于不感兴趣,所以未加测试。
关于使用DDBI的一个建议就是,只编译自己需要的那几个库模块,赿小赿好。
我是直接在网上找到的一个关于mysql的def文件文件,并生成导入库。测试基本成功。
// implib /system mysql4.lib libmysql.def
// dmd -version=Phobos -I. testmysql.d dbi.lib mysql4.lib sqlite.lib
import dbi.mysql.MysqlDatabase;
import dbi.Row;
import dbi.Result;
import std.stdio;
void main() {
MysqlDatabase db = new MysqlDatabase();
db.connect("host=localhost;dbname=mysql", "root", "password");
Result res = db.query("select * from user;");
Row rows = res.fetchRow();
writefln("user:%s password:%s", rows.get("User"), rows.get("Password"));
db.close();
}
另外也成功测试了SQLite。其它的数据库由于不感兴趣,所以未加测试。
关于使用DDBI的一个建议就是,只编译自己需要的那几个库模块,赿小赿好。
tomqyp
2007-02-26
引用
我倒是编译通过了,但是没法用。
没法用,可能是因为要用用调用数据库本身的驱动或API,我试用的是mysql,要用到mysql的两个库,可惜两个库是coff格式的,D网站上有个coff2omf工具,可以把coff转到omf格式,可惜是收费的,dmc我也不会用,你可以试试用dmc编译。
jinheking
2007-02-16
我也有这个问题,有没有高人能够解决!
dmd -run buildme.d all -ODBC -oracle
我倒是编译通过了,但是没法用。
那位大哥能够提供一个可以连接Postgres和oracle的ddbi.lib
并且给一个小例子。
在这里先谢谢了
dmd -run buildme.d all -ODBC -oracle
我倒是编译通过了,但是没法用。
那位大哥能够提供一个可以连接Postgres和oracle的ddbi.lib
并且给一个小例子。
在这里先谢谢了
发表评论
- 浏览: 7521 次
- 性别:

- 来自: 武汉

- 详细资料
搜索本博客
我的相册
TangoTeam
共 3 张
共 3 张
最新评论
-
利用运行时性能分析功能调 ...
windows下比较麻烦,tango我没测试,不过看了一下也没有编译到tango ...
-- by tomqyp -
利用运行时性能分析功能调 ...
用 diff 做个补丁给 tango
-- by oldrev -
利用运行时性能分析功能调 ...
思路很有新意。搞定tango,windows就可以分享给大家用了
-- by DavidL -
很详细的 D教程
啊 厉害,要是能找高手翻译下就好了
-- by tomqyp -
很详细的 D教程
很不错。谢谢。我已经把能看懂的全部看了一遍:)
-- by sofire






评论排行榜