`
ideage
  • 浏览: 319023 次
社区版块
存档分类
最新评论

DFL 2.027,1.041,2,3编译

阅读更多

注:DFL已经更新,http://www.dprogramming.com/dfl/snapshots/dfl-20090411.zip

 

感谢Chris! 整理下DFL 0.9.8 ,支持D2.027和D1.042

 

DFL0.98也支持D2了.但仅仅支持到D2.020,2.021加入了druntime,没有继续支持.

 

看看D2的新特性,也想试试.和 hqs7636 聊天中,发现有类似的需求.

 

简单写下支持方法:

 

1.修改application.d registry.d
messagebox.d,textbox.d data.d等,把\r\n修改成"\r\n",或者\r修改为"\r"

2.修改dlib.d
把OutOfMemoryException替换为OutOfMemoryError

3.drawing.d
修改solidColor,
blendColor两个属性,把return *this;修改成return this;

4.修改makelib,添加all.d,all.obj到dfl_files,dfl_objs

 

5.dmd 2.027 成功编译.

 

6.dmd1.041,2,3要编译,仅仅修改4就OK了.否则提示:Error 42: Symbol Undefined _D3dfl3all12__ModuleInfoZ

 

将D2的修改上传了:http://dlang.group.iteye.com/topics/download/c14626b1-5691-317d-b798-a7662d2b146e

下载后覆盖原来的文件,把dlib.d复制到internal文件夹,用-version=DFL_DMD2020ABOVE编译.

 

 

分享到:
评论
13 楼 betty_betty2008 2009-04-14  
1.用dfl -version=DFL_DMD2020ABOVE 编译提示
dlib.d( line 538):module gc cannot read file 'std\gc.d'
2.用go 可编译,无出错提示,但试建一Entice 单文件工程,不能编译。
12 楼 ideage 2009-04-14  
5.1你的makelib文件不正确.可能是用记事本修改断行了.

5.2 你的D2安装在了DTWO\windows\bin ,可你的dmd执行文件却是c:\dmd\bin\dmd,设置不正确.

5.3和5.2一样.你的目录不正确.

我的目录:

DFL: D:\D\dmd2\windows\import\dfl
DMD: D:\D\dmd2\windows\bin
DMC: D:\D\dm\bin

DMD目录下的 sc.ini
修改为 DFLAGS="-I%@P%\..\..\src\phobos" "-I%@P%\..\..\src\druntime\import" "-I%@P%\..\import"
加入了"-I%@P%\..\import"

11 楼 betty_betty2008 2009-04-14  
今天又试了一下,还是不行.
1.下载DMD2027,解压至C:\DTWO,目录结构大致如下:
C:\DTWO
---\DTWO\windows\bin
---\DTWO\winodws\lib
2.运行DFL098安装程序,不选"同时编译",安装目录为C:\DTWO\windows;
dfl.exe 安装在C:\DTWO\windows\bin;
3.将D2的修改上传了:http://dlang.group.iteye.com/topics/download/c14626b1-5691-317d-b798-a7662d2b146e

下载后覆盖原来的文件,把dlib.d复制到internal文件夹;
4.修改makelib,添加all.d,all.obj到dfl_files,dfl_objs

set dfl_files=all.d base.d  。。。。

set dfl_objs=all.obj base.obj 。。。。
5.C:\dtwo\windows\import\dfl目录下,在命令行执行编译命令,共做了如下几种尝试:
5.1.dfl -version=DFL_DMD2020ABOVE,敲y:

Compiling debug DFL...

C:\DTwo\windows\import\dfl>c:\DTwo\windows\bin\dmd -c -debug -g set _dfl_flags=
-I.. all.d base.d application.d internal/dlib.d internal/clib.d internal/utf.d
internal/com.d control.d form.d registry.d drawing.d menu.d notifyicon.d commond
ialog.d filedialog.d folderdialog.d panel.d textbox.d richtextbox.d picturebox.d
listbox.d groupbox.d splitter.d usercontrol.d button.d label.d collections.d in
ternal/winapi.d internal/wincom.d event.d socket.d timer.d environment.d message
box.d tooltip.d combobox.d treeview.d tabcontrol.d colordialog.d listview.d data
.d clipboard.d fontdialog.d progressbar.d resources.d statusbar.d imagelist.d to
olbar.d
Error: cannot read file set.d

Failed.

Done.
Could Not Find C:\DTwo\windows\import\dfl\*.obj
DFL lib files not found.
Error: dfl_debug.lib not found

C:\DTwo\windows\import\dfl>
5.2 再次修改makelib.bat,找到set _dfl_flags=%dfl_flags% 一行,做如下修改:
set _dfl_flags=%dfl_flags% -version=DFL_DMD2020ABOVE
然后运行go.bat:
DMC not found; using DMD path (if you get errors, install DMC)

Compiling debug DFL...

C:\DTwo\windows\import\dfl>c:\dmd\bin\dmd -c -debug -g  -version=DFL_DMD2020ABOV
E  -I.. all.d base.d application.d internal/dlib.d internal/clib.d internal/utf.
d internal/com.d control.d form.d registry.d drawing.d menu.d notifyicon.d commo
ndialog.d filedialog.d folderdialog.d panel.d textbox.d richtextbox.d picturebox
.d listbox.d groupbox.d splitter.d usercontrol.d button.d label.d collections.d
internal/winapi.d internal/wincom.d event.d socket.d timer.d environment.d messa
gebox.d tooltip.d combobox.d treeview.d tabcontrol.d colordialog.d listview.d da
ta.d clipboard.d fontdialog.d progressbar.d resources.d statusbar.d imagelist.d
toolbar.d
The system cannot find the path specified.

Failed.

Done.
Could Not Find C:\DTwo\windows\import\dfl\*.obj
Failed.
Press any key to continue . . .
Done.

C:\DTwo\windows\import\dfl>
5.3.在5.2中出错信息DMC not found; using DMD path (if you get errors, install DMC),依此,下载安装DMC 至C:\DTWO\,形成目录如下:
C:\DTWO\dm\bin;
C:\DTWO\dm\lib;
并将上两行添至系统环境变量path中;
与5.2一样出错信息.

10 楼 hurd 2009-04-12  
dfl svn更新到2.028和1.043了。
9 楼 hqs7636 2009-04-08  
4.修改makelib,添加all.d,all.obj到dfl_files,dfl_objs
将这条加个示例

例如:
set dfl_files=all.d base.d  。。。。

set dfl_objs=all.obj base.obj 。。。。
8 楼 hqs7636 2009-04-08  
刚才仔细读了一下makelib.bat文件,我是这么加的:

@echo.
@echo Compiling debug DFL...

%dmd_path%\bin\dmd -c %dfl_debug_flags% %_dfl_flags% -I.. %

dfl_files% -version=DFL_DMD2020ABOVE


@echo.
@echo Compiling release DFL...

%dmd_path%\bin\dmd -c %dfl_release_flags% %_dfl_flags% -I.. %

dfl_files% -version=DFL_DMD2020ABOVE

编译成功

还是你那个更简单,谢了

7 楼 ideage 2009-04-08  
已经够完整了.你用2.0吧.
你没有把把dblib.d复制到internal文件夹.

修改下makelib,添加一行set _dfl_flags=%dfl_flags% -version=DFL_DMD2020ABOVE

用go或者makelib编译就OK了.
6 楼 hqs7636 2009-04-08  
能写个完整的编译方法吗?谢谢

用原来的makelib.bat及go.bat不行了,报:internal\dlib.d(538): Error: module gc cannot read file 'std\gc.d'

现在的路径全不对了
5 楼 ideage 2009-04-07  
ah,真是的,修改了!2.027!
4 楼 hqs7636 2009-04-07  
这也是标题党,还跑出2.037了,呵呵
3 楼 ideage 2009-04-07  
呵呵,没有耐心了.

我们自己的活着吧...
2 楼 ideage 2009-04-07  
1.041,2.037编译的程序明显比较大:1.3M,而1.031-36才680k-720k.
1 楼 hurd 2009-04-07  
不知为啥D项目那么多都半死不活了。。。

相关推荐

Global site tag (gtag.js) - Google Analytics