今天我了解到D编程语言,它与C代码兼容。但是我没有找到任何信息表明是否可以从D使用C库,比如GTK或PortAudio?如果可能的话,您能解释一下如何做到吗?
还有很多这些头文件的翻译已经完成了。在着手像翻译GTK头文件这样的大型任务之前,最好先浏览Dsource的Bindings项目或在digitalmars D新闻组上提问。许多流行的库,如GTK,已经被封装了(例如:GTKD)。
一种常见的替代方案是在运行时加载库。以下是加载libpng并调用libpng函数的示例:
module libpngtest;
import std.stdio;
import core.sys.posix.dlfcn;
alias uint function() png_access_version_number_t;
int main() {
auto lib = dlopen("libpng.so".ptr, RTLD_LAZY | RTLD_LOCAL);
if (lib is null) {
writeln("EEEK!");
writeln(to!string(dlerror()));
return -1;
} else {
writeln("WOOT!");
auto png_access_version_number = cast(png_access_version_number_t)dlsym(lib, "png_access_version_number");
writeln(png_access_version_number());
}
if (dlclose(lib) == 0) {
return 0;
} else {
return -1;
}
} // main() function
// compile: dmd libpngtest.d -L-ldl
// run: ./libpngtest
使用 DPaste 进行测试:http://www.dpaste.dzfl.pl/917bc3fb