发新话题
打印

[D语言 库] D语言windows api库的编译与使用

D语言windows api库的编译与使用

知识若不分享 实在没有意义 http://www.d-programming-language-china.org 20070702

点击下面网址查看原文:
http://www.d-programming-language-china.org

windows api项目是一个转换MinGW的windows 头文件到D的项目,D的标准库所带的std.c.windows.windows内容极其贫乏,所以对于windows下D语言开发,这个项目必须加以关注。

windows api库的下载

http://www.prowiki.org/wiki4d/wiki.cgi?WindowsAPI
下载后解压到\dmd\src\other\win32目录下

windows api库的编译

DMD版本:1.018
用dsss编译,dsss.conf文件内容如下:

QUOTE:
[win32]
type=library
buildflags=-version=WindowsNTonly -version=Windows2000 -version=Unicode -version=Win32_Winsock2 -g -O -debug -inline -w
target=win32

编译提示vfw.d大量错误,把vfw.d排除掉。
再次编译,提示:module win32.iprtrmib is in multiple package, 把iprtrmib1.d排除掉。
再排除winsock.d,testall.d。
d3d9.d有大量编译错误,排除d3d9.d,d3d9types.d,d3d9caps.d
errorrep.d,reason.d,secext.d,lmmsg.d只适用于windows xp及以后的版本,编译静态库时先排除。
上面编译得到近4MB的Swin32.lib。( 本文出处: http://www.d-programming-language-china.org )

另外,d-programming-language-china.org用的是DSSS 0.67版本,发现DSSS的exclude开关根本不能用,不然在编译时可以用exclude=testall.d来排除指定文件了。

由于win32库有较多的条件编译,要编译一个通用的静态库是不太可能的,因此也可以不用静态库,实际写程序时用bud等工具来编译。

windows api库使用的问题

在写windows 相关程序时,最头疼的是不知道identifier定义在哪个头文件里,也就是要导入哪个文件。因为D语言没有强大的IDE支持,这就要靠我们自己写程序来实现了。为此d-programming-language-china.org写了一个程序,在用Scite写D语言程序时,把光标放于identifier,按快捷键就自动搜索指定目录,如果是导入模块,就打开导入模块对应的文件,如果是函数,变量,常量identifier,就打开搜索到的文件,并定位到指定行。
请关注D语言论坛 http://www.d-programming-language-china.org

( lastupdate:20070703 最新文章请访问http://www.d-programming-language-china.org )

关于一大步成功社区:
yidabu提倡在交流中学习,在分享中提高
收集感兴趣的知识,写下心得,通过网络与别人一起分享
理解一点就实践一步,收获什么就分享什么,成功就是这样一点点一步步累积起来的
网络只是一个工具,只有自己身心提高才是实实在在的。d-programming-language-china.org为大家提供一个学习交流各种知识的平台

TOP

你说的这个工具在哪找啊

TOP

TOP

复制内容到剪贴板
代码:
Index: win32/mswsock.d
===================================================================
--- win32/mswsock.d        (revision 198)
+++ win32/mswsock.d        (working copy)
@@ -140,7 +140,7 @@
                        union {
                                struct {
                                        LARGE_INTEGER nFileOffset;
-                                        HANLDE        hFile;
+                                        HANDLE        hFile;
                                }
                                PVOID pBuffer;
                        }

TOP

在哪下载啊,LZ给的那个地址里面没有啊

TOP

TOP

发新话题