原文:[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。
调用例子:
4.参考[url]http://qiezi.iteye.com/blog/26632[/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]
。。。。。。。。。。。。。。。