`
tomqyp
  • 浏览: 26154 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多
刚刚接触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
不过提示两个模块要手工编译,不知道为什么,还望高人赐教。
分享到:
评论
9 楼 tomqyp 2007-04-07  
对了,我试ddbi时试着用静态库结果提示要open ssl的几个库,一时打不到,能不能顺便提供。
8 楼 heromyth 2007-04-07  
不用收藏了。我刚刚编译了mysql-4.1.22的libmysql库,并且已将导入库进行了转换。可以 D 连接工具里直接使用,在 DDBI 里简单测试成功。这里可以下载:http://bitworld.ys168.com
7 楼 tomqyp 2007-04-07  
好详细,好藏,我的只改了几个用到的函数
6 楼 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
5 楼 qiezi 2007-04-06  
你这个def文件哪找的?贴一个出来用用。。。
4 楼 qiezi 2007-04-06  
使用mysql里面的dll,用implib导出.def文件,修改名称再用implib导出lib即可。mysql的dll用的是stdcall,它导出dll时把名称重定义过了,所以要这么麻烦地改回去。
3 楼 heromyth 2007-04-06  
用vc一直没成功编译mysql,因此无法得到其导入库,也就无法测试coff2omf是否起作用。
我是直接在网上找到的一个关于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的一个建议就是,只编译自己需要的那几个库模块,赿小赿好。
2 楼 tomqyp 2007-02-26  
引用
我倒是编译通过了,但是没法用。

没法用,可能是因为要用用调用数据库本身的驱动或API,我试用的是mysql,要用到mysql的两个库,可惜两个库是coff格式的,D网站上有个coff2omf工具,可以把coff转到omf格式,可惜是收费的,dmc我也不会用,你可以试试用dmc编译。
1 楼 jinheking 2007-02-16  
我也有这个问题,有没有高人能够解决!

dmd -run buildme.d all -ODBC -oracle

我倒是编译通过了,但是没法用。
那位大哥能够提供一个可以连接Postgres和oracle的ddbi.lib
并且给一个小例子。
在这里先谢谢了

相关推荐

    编译原理答案(编译原理及编译程序构造)

    本资源摘要信息将对编译原理的基本概念进行详细的解释,并以编译程序的逻辑部分为主线,涵盖了编译过程的五个阶段和编译程序的七个逻辑组成部分。 首先,让我们从编译原理的基本概念开始。源程序是指由汇编语言或...

    飞腾交叉编译环境搭建之交叉编译工具链配置

    飞腾交叉编译环境搭建之交叉编译工具链配置 飞腾交叉编译环境搭建是指在不同的操作系统平台上,使用飞腾提供的交叉编译工具链来实现跨平台编译的过程。该过程需要配置交叉编译工具链,以便在不同的平台上实现编译。...

    真正可用的PHP反编译工具,反编译ZEND

    它的源代码是用C语言编写的,然后被编译成ZEND引擎能理解的字节码。ZEND引擎是PHP的核心,负责解析和执行PHP代码。然而,出于保护知识产权或者安全考虑,有时候开发者会将PHP源代码编译为不可读的ZEND格式,这就是...

    EA反编译 EX4反编译MQ4

    本文将深入探讨"EA反编译 EX4反编译MQ4"这一主题,以及如何从`.ex4`文件转换回`.mq4`源代码。 首先,我们需要理解`.ex4`和`.mq4`文件的区别。`.ex4`文件是经过编译的,就像计算机程序的二进制可执行文件一样,它...

    最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编

    最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译最新反编译...

    编译原理.rar编译原理编译原理

    编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理...

    编译原理-讨论课-编译程序是如何开发的

    编译原理-讨论课-编译程序是如何开发的包含以下两部分文件: 1.【报告】分为四章进行展示,包括摘要、参考文献,正文部分为包括第一个编译程序、早期编译程序开发、目前编译程序开发,以及总结。 2.【PPT】使用时间...

    VB6.0反编译工具

    VB6.0反编译工具是一种专门用于解析和恢复Visual Basic 6.0编译后的程序代码的软件。在编程领域,编译器将高级语言(如VB6.0)编写的源代码转换为机器可执行的二进制代码,这个过程是不可逆的。然而,反编译工具试图...

    Lua编译与反编译工具.zip

    功能应该是对luc反编译的cmd命令(java -jar unluac.jar --rawstring d:\xx.lua>d:\xx.lua)进行了封装 使用时发现反编译出来的汉字未进行解码 用.Net Reflector反编译进行查看,发现程序封装的命令少了--rawstring...

    威纶触摸屏XOB反编译解密 适合EB8000所有型号的XOB反编译 禁止反编译,反编译密码错误.zip

    威纶触摸屏XOB反编译解密 适合EB8000所有型号的XOB反编译, 禁止反编译,反编译密码错误

    编译好的Dlib各版本静态库,及编译方法,及编译好后的配置方法

    1、如何用cmake或vs编译dlib的方法=>编译方式很简单,个人比较喜欢用vs编译(建一个win32工程,根据我说明里写的将.c与.cpp拉进工程,然后编译)=》可根据自己所用平台版本自行编译 3、及编译好后如何配置vs2013方法...

    自己动手构造编译系统++编译、汇编与链接_14077184.pdf

    本书以作者实现的一个基于Intelx86指令集的编译系统为例,结合程序代码的主要部分详细阐述了编译系统的实现原理和过程。本书对编译器、汇编器、链接器、编译优化器涉及的关键算法、数据结构和程序实现流程,以及ELF...

    编译原理习题答案 编译原理

    编译原理是计算机科学领域的重要学科,主要研究如何将高级编程语言转换为机器可执行的低级代码。这个学科涉及到词法分析、语法分析、语义分析、优化以及目标代码生成等多个关键步骤。本资料“编译原理习题答案”显然...

    Xjar jar反编译软件

    总结起来,Xjar jar反编译软件和XJad是两种用于Java反编译的工具,它们帮助开发者理解已编译的代码,但需要注意的是,反编译的准确性受多种因素影响,且应尊重他人的知识产权。在实际使用中,选择合适的反编译工具并...

    VB6.0反编译.rar

    VB6.0反编译工具是针对Microsoft Visual Basic 6.0编程环境开发的应用程序,主要用于解析和理解VB6.0编译后的可执行文件(.exe或.dll),以揭示其源代码逻辑和结构。这一过程称为反编译,它是软件逆向工程的一部分,...

    VFP 反编译工具全集

    标题 "VFP 反编译工具全集" 涉及到的是Visual FoxPro(VFP)编程环境下的一个特定领域——反编译技术。Visual FoxPro是Microsoft开发的一种关系数据库管理和开发工具,广泛用于创建桌面应用程序。在描述中提到的“可...

    JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具

    JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA...

    x11库如何编译到Ubuntu上或者交叉编译到arm linux上

    在Ubuntu或ARM Linux设备上编译X11库是一项技术性较强的任务,需要对编译工具链、依赖关系和构建过程有深入理解。以下将详细讲解X11库的编译过程。 首先,让我们了解X11库的基本结构和依赖。X11库由多个组件组成,...

    java反编译工具绿色版

    Java反编译工具是程序员在开发和调试过程中经常会用到的一种实用软件,它能够将已编译的Java字节码(.class文件)转换回源代码格式,这对于查看和理解第三方库或者研究已有的二进制代码非常有帮助。本绿色版的Java反...

Global site tag (gtag.js) - Google Analytics