- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试在 Windows 中使用 DMD 编译器本身(没有 IDE)构建一个项目。而且我发现自己几乎无法意识到有关链接的某些时刻。通常 IDE 会为我做这件事。
我的项目结构
project
├──bin
| ├──exemple.obj
| └──exemple.exe
└──src
├──a
| └──b.d
└──exemple.d
示例.d
import a.b;
void main() { B obg = new B(); }
b.d
module a.b;
class B {
private int i;
public this() {i=0;}
public void act() {i++;}
}
一开始好像用命令搭建很简单:
cd C:\path\to\my\project
dmd bin\exemple.exe src\exemple.d -IC:\path\to\my\project\src
但它只向我展示了一些错误信息:
OPTLINK (R) for Win32 Release 8.00.13
Copyright (C) Digital Mars 1989-2010 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
bin\exemple.obj(exemple)
Error 42: Symbol Undefined _D1a1b1B7__ClassZ
bin\exemple.obj(exemple)
Error 42: Symbol Undefined _D1a1b1B6__ctorMFZC1a1b1B
--- errorlevel 2
最后我猜是 obj 文件丢失了。我使用命令手动完成了它:
cd bin
dmd ..\src\a\b.d -c
cd ..
然后手动将它添加到我的构建命令中:
dmd bin\exemple.exe src\exemple.d -IC:\path\to\my\project\src bin\b.obj
现在可以了。
太棒了。但是,如果我们有很多额外的 d 文件和复杂的文件夹结构怎么办?
它是怎么雾化的?
当我发现 DMD 不会自动执行所有这些操作时,我感到非常惊讶。也许,我只是做错了。
最佳答案
您不必单独构建 a/b.d。但是您必须将所有源(或目标)文件传递给 dmd。 dmd 没有弄清楚依赖关系。
看看rdmd .它是一个工具,可以找出依赖关系,然后在所有依赖项上运行 dmd(然后默认运行可执行文件,--build-only
会阻止这种情况)。它随 dmd 版本一起提供。
关于windows - DMD:对链接和构建的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23888440/
我编译文件 stacktrace.d:void main(){assert(false);} 关闭 ASLR,运行时我得到: core.exception.AssertError@stacktrace
我正在尝试在 Windows 中使用 DMD 编译器本身(没有 IDE)构建一个项目。而且我发现自己几乎无法意识到有关链接的某些时刻。通常 IDE 会为我做这件事。 我的项目结构 project ├─
我目前正在试用DerelictSDL2 (绑定(bind)到 D 的 SDL2 库)并且我编写了一个成功加载 JPG 图像并将其显示在窗口中的代码。也就是说,当它使用 dmd 编译时。当我尝试使用 g
我可以测试 DMD 是否正在使用 version(DMD){} 编译给定的代码,但我如何检查它的哪个版本? (2.66/2.65 等) 更简洁地说,我想检查 @nogc修饰符存在, 如果不是 - 定义
根据 http://dlang.org/statement.html 的“Foreach 限制”部分以下代码 int[] a; int[] b; foreach (int i; a) { a
有时 SciTE(以及程序员记事本)会停止处理 DMD.exe 输出的错误消息。 我发现,他们都无法跳转到 game.d 中的第 81 行:“game.d(81):一些错误” 而这个有效:“game.
这里我想锁步迭代两个 size_t 数组 import std.stdio; import std.range; import std.exception; import std.conv; stru
人们一直试图用旧版本的 Dmd 和 Dub(0.9.2 而不是 1.0.0)来构建我的项目,但它不起作用。我可以在 dub.json 文件中指定所需的最小配音版本吗? 最佳答案 不幸的是你不能。见 t
我有一个名为“dprogram.d”的 d 源文件,并在 mac osx 的终端中使用命令 $ dmd dprogram.d 创建一个可执行文件。根据官方文档,编译器将自动编译源代码并链接 .o 目标
根据 http://dlang.org/statement.html 的“Foreach 限制”部分以下代码 int[] a; int[] b; foreach (int i; a) { a
我是 D 编程新手。选择 DMD (2.061) 或 GDC(4.6、4.7 或 4.8,快照)的优缺点是什么?我应该选择哪个 GDC 版本?我已经成功构建了 GCC-4.8 和 GDC-4.8 的最
我在 D 中有一个模板类,它以另一个模板作为参数,它是这样开始的: class RuleVars(alias RuleType, RuleRange, SubstitutionRange) if (_
我有一个名为“dprogram.d”的 d 源文件,并在 mac osx 的终端中使用命令 $ dmd dprogram.d 创建一个可执行文件。根据官方文档,编译器将自动编译源代码并链接 .o 目标
每当我使用 DMD 构建静态库时,我都能够将它链接到我的应用程序并且编译正常,但是在应用程序中调用库的任何时候我都会得到: Segmentation fault (core dumped) 为了构建我
我正在尝试安装 DMD,因此完全遵循此页面上提供的建议:http://dlang.org/dmd-osx.html .但是,当我尝试构建 .d 文件时出现错误: 这是我的hello.d import
我有 Solaris 10 + Zenoss 2.7.0,如果没有 Oracle 许可证,我无法升级它,因此我尝试寻找解决方法,这就是我请求您帮助的原因。 对于过去 5 分钟内收到的来自同一设备的任何
我只是从 http://www.digitalmars.com/d/download.html 安装了 DMD 编译器对于 Ubuntu 64 位 (dmd_2.055-0_amd64.deb)。但是
有人在 Snow Leopard 上试过 Digitalmars D 编译器(第 2 版)吗?我想升级,但我宁愿有一个可用的 D 编译器。 最佳答案 如果您仍然不确定,请深呼吸并开始尝试: Chang
我想部分等效的问题:使用 DMD 编译的代码是否应该在所有情况下使用 GDC 自动编译? 我问是因为我在从 ubuntu 10.4(看似循环依赖,叹气)存储库安装现代版本的 GDC 时遇到问题。 最佳
当我import etc.c.curl; DMD 告诉我 Warning 2: File Not Found curl.lib 这个 curl.lib 在哪里? (我尝试了 http://curl.h
我是一名优秀的程序员,十分优秀!