我正在使用VisualD和DMD在Visual Studio 2012中编写D。
我的解决方案在解决方案资源管理器中如下所示:
ConsoleApp1 (solution name)
- codecramlib (a static D library)
- - http (folder)
- - - package.d
- - - request.d
- malakai (console project)
- - main.d
我的静态D库codecramlib
本身就可以很好地构建。来源:
包
module codecramlib.http;
public import request;
要求
module request;
// temporary filler code
class Request
{
public int imARequest()
{
return 13;
}
}
当我右键单击codecramlib
并构建时,我在vs控制台中得到以下输出:
------ Build started: Project: codecramlib, Configuration: Debug Win32 ------
Building Debug\codecramlib.lib...
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
main.d:
import std.stdio;
import codecramlib.http; // also tried import codecramlib;
int main(string[] argv)
{
writeln("Hello D-World!");
return 0;
}
我codecramlib
通过在malakai
项目上单击鼠标右键,然后选择“属性”>“配置属性”>“编译器”>“常规”,然后将“其他导入”字段修改为“ ../codecramlib”,将其添加为malakai依赖项。然后单击“应用”和“确定”。
当我malakai
在解决方案资源管理器中右键单击并单击生成时,出现此错误:
Error 1 Error: module http is in file 'codecramlib\http.d' which cannot be read C:\Users\< path removed >\Visual Studio 2012\Projects\ConsoleApp1\malakai\main.d 2
我尝试的第一件事是将“其他导入”行更改为:
../
这似乎有所帮助,因为生成错误已更改为:错误1错误:模块请求位于文件'request.d'中,无法读取C:\ Users \ <删除的路径> \ Visual Studio 2012 \ Projects \ ConsoleApp1 \ codecramlib \ http \ package.d 3
为了使编译器能够识别codecramlib
静态库中的request.d ,我将package.d更改为:
module codecramlib.http;
public import http.request;
这似乎是倒退了一步,因为然后不再构建codecramlib库,并且当我尝试构建malakai时遇到了以下错误:
Error 1 Error: module request from file http\request.d must be imported as module 'request' C:\Users\< path removed >\Visual Studio 2012\Projects\ConsoleApp1\codecramlib\http\package.d 3
Error 2 Error: module request is in file 'http\request.d' which cannot be read C:\Users\< path removed >\Visual Studio 2012\Projects\ConsoleApp1\codecramlib\http\package.d 3
如何使用Visual D在malakai控制台项目的codecramlib静态库中使用codecramlib.http包?
更正了我的文件夹结构,如解决方案资源管理器中所示。我的package.d和request.d缩进不正确。
添加了main.d的内容
这部分
我尝试的第一件事是将“其他导入”行更改为:
../
这似乎有所帮助,因为生成错误已更改为:错误1错误:模块请求位于文件'request.d'中,无法读取C:\ Users \ <删除的路径> \ Visual Studio 2012 \ Projects \ ConsoleApp1 \ codecramlib \ http \ package.d 3
使我相信这是因为您的请求模块不在codecramlib.http包中,并且因为dmd不知道在/ codecramlib / http /中查找request.d。
我的建议是将“其他导入”字段保留为“ ../”,并将codecramlib / http / request.d中的模块重命名为codecramlib.http.request
,然后将codecramlib / http / package.d中的导入更改为public import codecramlib.http.request
。
一般来说,您需要将模块名称与目录布局进行匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句