package - package.d 遇到问题
问题描述
我在使用 D 的package.d
功能时遇到问题。我有我的package.d
文件:
module dew;
public
import dew.util;
然后我有util.d
:
module dew.util;
struct Size
{
int width;
int height;
}
当我尝试在另一个项目中使用它时,它给了我这个错误: 我知道这应该可以工作,因为 GitHub 上的项目使用它,特别是bindbc-sdl。
解决方案
你的代码是正确的。通过错误消息,我假设您的 DUB 项目布局可能看起来像这样:
- 露/
- dub.sdl/dub.json
- 来源/
- 包.d
- 实用程序.d
然而,这是不正确的。默认情况下,DUB 仅使用导入文件夹而不是指定所有输入源文件,因此编译器会尝试从文件系统中的导入路径中发现文件。编译器在您的错误屏幕截图中转储了它搜索的导入路径。
相当于它现在正在做的粗略编译器是(参见 参考资料dub -v
)
dmd source/app.d -Isource -I../dew/source
您需要想象其中写入的路径对编译器是不可见的,因此 dew/source/ 路径只是编译器无法解释的一些不透明字符串。现在编译器在其搜索路径中看到的只是 package.d 和 util.d。但是,对于从文件夹导入功能,它们需要与文件系统布局相对应,即您需要有一个名为dew
文件存储位置的文件夹。
所以一个名为的模块dew.util
将对应于dew/util.d
你的包裹dew
将对应于dew/package.d
因此,对于您的配音项目,这基本上意味着您需要将所有源文件移动到
- 露/
- dub.sdl/dub.json
- 来源/
- 露/
- 包.d
- 实用程序.d
- 露/
module
或者,由于文件顶部的声明,可以逐个手动指定所有文件,编译器可以在其中查找它们,但是您失去了将模块名称映射到文件系统路径的便利,这可能是其他社区制作的 D 源工具和 IDE 所期待的。在命令行上相当于
dmd source/app.d ../dew/source/dew/package.d ../dew/source/dew/util.d
推荐阅读
- python - 无法从scrapy获得输出
- com - MinGW g++ 是否可以理解 COM 服务器的类型库?
- java - org.apache.catalina.core.StandardWrapperValve.invoke 为 servlet [Jersey REST 服务] java.lang.NullPointerExceptio 分配异常
- python - 重新初始化时 tkinter 移动画布
- node.js - I am using Op.not in sequilize and i want to use or in between same fields
- linux - 如何使用 Linux 命令跳过字符串开头和结尾的表达式
- python - 转换 numpy 数组的 dtype 会更改其内容/值
- python - 从 csv url 列表下载大量 pdf 文件
- java - 如何在 Java 15 及更高版本中使用 Nashorn?
- c - 如何使用 if 语句调用函数,然后打印函数内部的值