DプログラムからC++関数を呼び出す方法は?私はまだそれを行う方法を理解することはできません。どのコマンドを実行する必要がありますか?私はFedoraでdmdを使用しています。
質問する
3121 次
1 に答える
15
C関数を呼び出す場合、私が考えることができる最も簡単な例:
$ cat a.c
int f(int a, int b){
return a + b + 42;
}
$ cat a.di
extern (C):
int f(int, int);
$ cat b.d
import std.stdio;
import a;
void main(){
writeln( f( 100, 1000) );
}
$ gcc -c a.c
$ dmd b.d a.o
$ ./b
1142
$
共有オブジェクトを使用している場合は、次のようにすることができます。
$ cat sdltest.di
module sdltest;
extern (C):
struct SDL_version{
ubyte major;
ubyte minor;
ubyte patch;
}
SDL_version * SDL_Linked_Version();
$ cat a.d
import std.stdio;
import sdltest;
void main(){
SDL_version *ver = SDL_Linked_Version();
writefln("%d.%d.%d", ver.major, ver.minor, ver.patch);
}
$ dmd a.d -L-lSDL
$ ./a
1.2.14
$
この例では、SDL関数とリンクしました。への-L
引数を使用すると、dmd
引数を に渡すことができます。ld
この場合-lSDL
は、SDL とリンクします。
ここでは、 D インターフェイス ファイル ( .di
) について説明します。
htodも見てください。
于 2012-04-08T12:35:13.600 に答える