六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 74|回复: 0

奋斗一天没成果

[复制链接]

升级  63.33%

43

主题

43

主题

43

主题

秀才

Rank: 2

积分
145
 楼主| 发表于 2013-2-7 03:41:09 | 显示全部楼层 |阅读模式
今天早上突发奇想,想用D语言新增加的mixin和可变参数模板来封装Windows的DLL,结果奋斗了一天也没有结果。我原先设想的是达到类似如下伪码的水平:
1 //Module 模板第一个参数是DLL路径名,后跟不限个数 Proc 模板。Proc用于定义一个DLL中的函数,第一个参数为函数名,第二个为返回值类型,其余为形参。
2 Module!("User32.dll", Proc!("MessageBoxW", int, HWND, const wchar*, const wchar*, uint), Proc!("GetDesktopWindow", HWND)) user32;
3 //使用DLL中的函数:
4 user32.MessageBoxW(null, "Hello! World!", "Hello!", MB_OK);
5 HWND hdesktop = user32.GetDesktopWindow();<span style="color: rgb(128, 64, 64);" />我原本想用函数编译时执行将Proc定义的DLL中的函数生成Module模板的函数指针成员字符串,再用mixin加入Module模板类定义,折腾了一天,结果最后才发现编译时函数执行不支持可变参数,真是苦恼啊,不知哪位高人有更好的解决方法。
顺带说一句,Walter放出了 DMD 1.007,解决了一些Bugs,语法上稍微做了一些调整。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表