Articles of d

分两步使用DMD:将64位(Linux)

我在64位Ubuntu上运行,并试图让DMD v2.052与Code :: Blocks一起工作。 问题是,Code :: Blocks在两个单独的步骤中编译和链接,我似乎无法解决这个问题。 我的编译器标志(对于这个项目)是-m64,我的链接器标志都是在dmd.conf中提供的。 然而,当我尝试这样做的时候,我会遇到错误 Linking console executable: bin/Debug/Gossamer /usr/bin/ld: skipping incompatible /home/me/devl/sfml2/bindings/d/lib/libdsfml-system.a when searching for -ldsfml-system /usr/bin/ld: cannot find -ldsfml-system /usr/bin/ld: skipping incompatible /home/me/devl/sfml2/bindings/d/lib/libdsfml-graphics.a when searching for -ldsfml-graphics /usr/bin/ld: cannot find -ldsfml-graphics /usr/bin/ld: skipping incompatible /home/me/devl/sfml2/bindings/d/lib/libdsfml-audio.a when searching for -ldsfml-audio /usr/bin/ld: cannot find -ldsfml-audio /usr/bin/ld: skipping incompatible /home/me/devl/sfml2/bindings/d/lib/libdsfml-window.a when searching […]

未使用function的链接器错误:它们什么时候发生?

假设静态库libfoo依赖于另一个静态库libbar的某些function。 这些和我的应用程序都是用D写的。如果我的应用程序只是直接使用libfoo,而且只调用libfoo中不引用libbar中的符号的函数,有时程序链接成功,不会将libbar传递给链接器,有时则不成功。 发生这些事情似乎取决于我用什么编译器编译libfoo,libbar和我的应用程序,即使所有编译器都使用GCC工具链进行链接。 如果我使用DMD,如果不将libbar传递给链接器,我永远不会收到链接器错误。 如果我使用GDC,我有时会这样做,原因我不明白。 如果我使用LDC,我总是这样做。 如果在libfoo中引用的符号是未定义的,但是这个符号出现在应用程序对象文件没有引用的函数中,是什么决定了GCC链接程序是否失败?

看一个目录树没有inotify

我试图写一个备份工具,应该处理大量的文件夹中的大约2TB的数据。 我希望它执行文件时,他们被创build/编辑/删除操作,最好还文件移动或重命名。 我弄乱了fanotify,只是意识到它只适用于文件编辑。 如果可以的话,我反对使用inotify,因为我将不得不编辑最大的文件手表,我不想这样做。 这将有一个很大的性能影响,我认为。 我最好只是设置一个recursion地工作到它下面的所有文件的一个filewatch。 有谁有这方面的经验,谁知道什么是一个好方法? 我应该去inotify,只是采取性能打击? 或者我可以采取不同的方法?

DMD2无法在Linux上编译共享库amd64

我一直在32位机上编程,直到最近,我升级到了64位。 我在xubuntu 16.04(amd64)上使用最新版本的DMD(amd64)。 在升级之前,我可以使用dmd -shared 'FILES'轻松地编译共享库,但是现在,它给出了一个错误。 我有一个名为qd的文件: module q; export extern(C) int abcd(){ return 4; } 而现在当我做dmd -shared 'q.d' ,我得到这个: nafees@OptiPlex-755:~/Desktop/temp$ dmd -shared qd /usr/bin/ld: qo: relocation R_X86_64_32 against `__dmd_personality_v0' can not be used when making a shared object; recompile with -fPIC qo: error adding symbols: Bad value collect2: error: ld returned 1 exit status […]

D(和Tango)在PowerPC Linux上

用GooglesearchD是很困难的,所以我找不到一个好的答案: 我有一个旧的iBook G3,我想在其上安装Linux,并使用它来编译(和testing)使用Tango编写的D程序。 这可能吗? 还是没有人试过呢? 毕竟GDC + Tango的Mac端口也被分割了。

如何在linux下使用D编程语言取消缓冲input?

默认情况下,你不能等待用户按下input在Unix上得到terminalinput。 我怎样才能立即获得input? 我在debian Linux上使用gdc,所以我不能使用ncurses。 谢谢。

closures第三方代码的unittest执行

我想了解如何使用“-unittest”dmd开关来select哪些文件执行了unittests。 我有一个文件,“广告”,包含一个unittest块。 文件“ad”从包含它们自己的unit testing块的第三方模块(需要文件“b1.d”,然后是“b2.d”)导入。 我不想在第三方代码中运行testing:我只是想在广告中运行testing 如果我先编译第三方代码 dmd -c b1.d b2.d 然后尝试使用复制的unit testing将其与我的代码链接 dmd -unittest ad b1.o b2.o 那么我得到一个错误,说b1.d中哪个广告试图导入的模块是在一个无法读取的文件中。 任何人都可以告诉我如何做到这一点? 谢谢!

在Linux上使用D编程语言的GLFW

我知道这是一个利基的话题。 但希望有人在这里知道。 花了一些时间研究,我决定,D编程语言对我来说是最好的 – 高层次,相对好的绑定和快速。 我想获得GLFW和OpenGL,并与它一起运行。 我已经对D编程进行了一些研究,并成功地编译了使用标准库的简单导入的程序。 我有其他语言(Python,C,C#,C ++等)的编程经验,但是我不知道如何让GLFW,D和OpenGL一起工作。 我花了很长时间在网上search,所有可以find的教程都与Windows相关,或者不解释。 我在Arch Linux上运行。 如果有人能给我一个简单的例子,比如编译器标签,放入“东西”的目录,以及导入语句,那将是非常棒的。 谢谢。

如何将D中的epoch time(unix timestamp)转换为标准(year-month-day)

你如何将纪元时间(unix timestamp)转换为D中的标准时间? 有没有一种方法来定制格式?

d2:没有得到任何回溯信息

我正在玩gtkd包装生成器,并运行到一个std.convexception,我无法设法得到任何符号debugging信息。 我已经编译了debugging符号: $ dmd -gc -debug utils/HTODConvert.d utils/WrapperIF.d utils/funct.d utils/DefReader.d utils/GtkWrapper.d utils/HtmlStrip.d utils/IndentedStringBuilder.d utils/convparms.d utils/GtkDClass.d -ofgtkwrap 但回溯只是内存地址列表: std.conv.ConvException@/usr/include/d/std/conv.d(1779): Unexpected ' ' when converting from type string to type int —————- /home/martin/code/d/GtkD/wrap/gtkwrap() [0x805c4ab] /home/martin/code/d/GtkD/wrap/gtkwrap() [0x805c57a] /home/martin/code/d/GtkD/wrap/gtkwrap() [0x806d49e] /home/martin/code/d/GtkD/wrap/gtkwrap() [0x806924e] /home/martin/code/d/GtkD/wrap/gtkwrap() [0x8068c4a] /home/martin/code/d/GtkD/wrap/gtkwrap() [0x8066aed] /home/martin/code/d/GtkD/wrap/gtkwrap() [0x8066824] /home/martin/code/d/GtkD/wrap/gtkwrap() [0x806388f] /home/martin/code/d/GtkD/wrap/gtkwrap() [0x806367c] /home/martin/code/d/GtkD/wrap/gtkwrap() [0x805e988] /home/martin/code/d/GtkD/wrap/gtkwrap() [0x805e910] /home/martin/code/d/GtkD/wrap/gtkwrap() [0x805e793] /home/martin/code/d/GtkD/wrap/gtkwrap() […]