package.d 遇到问题
Having trouble with 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 的项目布局可能如下所示:
- 露水/
- 配音.sdl/dub.json
- 来源/
- package.d
- util.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
所以对于您的配音项目,这基本上意味着您需要将所有源文件移动到
- 露水/
- 配音.sdl/dub.json
- 来源/
- 露水/
- package.d
- util.d
或者,由于文件顶部的 module
声明,可以逐个手动指定所有文件,编译器可以在其中查找它们,但是您失去了模块的便利性名称被映射到文件系统路径,这可能是其他社区制作的 D 源工具和 IDE 所期望的。在命令行上相当于
dmd source/app.d ../dew/source/dew/package.d ../dew/source/dew/util.d
我在使用 D 的 package.d
功能时遇到了问题。我有我的 package.d
文件:
module dew;
public
import dew.util;
然后我有 util.d
:
module dew.util;
struct Size
{
int width;
int height;
}
当我尝试在另一个项目中使用它时,它给我这个错误:
您的代码是正确的。根据错误消息,我假设您使用 DUB 的项目布局可能如下所示:
- 露水/
- 配音.sdl/dub.json
- 来源/
- package.d
- util.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
所以对于您的配音项目,这基本上意味着您需要将所有源文件移动到
- 露水/
- 配音.sdl/dub.json
- 来源/
- 露水/
- package.d
- util.d
- 露水/
或者,由于文件顶部的 module
声明,可以逐个手动指定所有文件,编译器可以在其中查找它们,但是您失去了模块的便利性名称被映射到文件系统路径,这可能是其他社区制作的 D 源工具和 IDE 所期望的。在命令行上相当于
dmd source/app.d ../dew/source/dew/package.d ../dew/source/dew/util.d