链接以下两个文件会给我一个链接错误:
import std.stdio;
extern string test ();
void main() {
writeln(test());
readln();
}
string test () {
return "hello";
}
我得到的错误是:
Error 42: Symbol Undefined _D1a4testFZAya`
---errorlevel 1
有什么问题?
import std.stdio;
import b;
void main() {
writeln("some_var from Module b: \"", b.some_var, "\"");
}
public string some_var = "Hello, world!";
//you can also use static module constructors to set your vars
static this() {
some_var ~= " -- How are you?";
}
该代码由Joshua Reusch在digitalmars.com网站的excellent D forum for beginners中提供。
答案 0 :(得分:4)
将a.d
修改为:
import std.stdio;
import b;
//extern string test ();
void main() {
writeln(test());
readln();
}
extern
是一个链接属性,主要用于指定用于给定函数的调用约定(通常是某个库中的C函数)。有关extern
和其他属性的更多信息,请访问:http://www.d-programming-language.org/attribute.html。如果你只有D源文件,那么就不需要extern。但是,如果你混合C或C ++和D代码,你肯定必须使用它。