2015-10-29 13 views
0

我想在我的Ubuntu上使用augeas。我已經安裝了libaugeas-dev apt軟件包,在/usr/include目錄中安裝augeas.h文件。現在我想打電話給一些augeas功能。dlang如何指定外部「C」庫的位置?

第一個是augeas *aug_init(const char *root, const char *loadpath, unsigned int flags)。我嘗試用下面的代碼

import std.string; 

struct augeas; 

extern (C) augeas *aug_init(const char *root, const char *loadpath, uint flags); 

void main() { 
    auto x = aug_init(std.string.toStringz("/"), 
        std.string.toStringz(""), 
        0); 
} 

代碼編譯使用它,但鏈接器找不到aug_init功能(undefined reference to aug_init'`)。我怎麼能告訴他找到它?

回答

1

所有被需要的就是把在dub.json以下條目:

"libs": ["augeas"] 

所以整個dub.json是這樣的:

{ 
    "name" : "aug-tool", 
    "description" : "Hello World", 
    "dependencies" : { }, 
    "libs": ["augeas"] 
} 
+1

一般來說,你只需要告訴鏈接包括圖書館。 '配音'可以做到這一點。 'dmd'可以用兩件事情做自己:你可以添加'編譯(LIB,「augeas」);'到您的源文件編譯或'-L-laugeas'到構建命令行。我相信''gdc'和'ldc'也支持'-L-l'命令。或者,如果你單獨鏈接,只需將'-laugeas'傳遞給'ld'命令行。 –