让D访问其他应用程序

原文:[url]http://ideage.iteye.com/blog/26718[/url]

关键字: D 导入库 HTOD
要使用D,就要和其他应用配合。D和C是二进制兼容的。可以转换C的头文件为D的文件,然后访问C的库,或者兼容C的库。

步骤:
1.转换C的头文件。具体办法http://www.digitalmars.com/d/htomodule.html,也可以使用HTOD工具 http://www.digitalmars.com/d/htod.html,下载在http://ftp.digitalmars.com/d/htod.zip
2.转换动态库,生成D可以链接的lib文件,D链接的格式是Intel32为OMF格式,和微软使用的lib文件格式COFF不兼容,转换格式的程序我没有找到,虽然介绍了。可使用的是implib,用法http://www.digitalmars.com/ctg/implib.html,implib /s kernel32.lib kernel32.dll 下载地址http://ftp.digitalmars.com/bup.zip,包含了几个工具。

创建导入函数定义def文件的工具http://www.dprogramming.com/linkdef.php

3.例子,转换SQLServer的头文件,SQLDB.H,SQLFRONT.H。



//代码太长,略,请参见原文



调用例子:


module test;

import sqldb;
import std.c.stdio;
import std.string;

int main(){

PDBPROCESS dbproc; // The connection with SQL Server.
PLOGINREC login; // The login information.
DBCHAR name[100];
DBCHAR city[100];

// Initialize DB-Library.
dbinit();

// Get a LOGINREC.
login = dblogin ();
dbsetlname (login, "sa",DBSETUSER);
dbsetlname (login, "",DBSETPWD);
dbsetlname (login, "example",DBSETAPP);

// Get a DBPROCESS structure for communication with SQL Server.
dbproc = dbopen (login, "BM");

// Retrieve some columns from the authors table in the pubs database.

// First, put the command into the command buffer.
dbcmd (dbproc, "SELECT cpm,ccd FROM pt..tzl_sp");
dbcmd (dbproc, " WHERE CID < 130 ");

// Send the command to SQL Server and start execution.
dbsqlexec (dbproc);

// Process the results.
if (dbresults (dbproc) == SUCCEED)
{
// Bind column to program variables.
dbbind (dbproc, 1, NTBSTRINGBIND, 0, name);
dbbind (dbproc, 2, NTBSTRINGBIND, 0, city);

// Retrieve and print the result rows.
while (dbnextrow(dbproc) != NO_MORE_ROWS)
{
printf ("%s from %s\n", toStringz(name), toStringz(city));
}
}
// Close the connection to SQL Server.
dbexit ();
return 0;
}



4.参考[url]http://qiezi.iteye.com/blog/26632[/url]


。。。。。。。。。。。。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值