有没有办法从C或C+调用D函数+;main()? 我正在为一个类做消息传递,我想用C或C++主函数调用一个D函数。我已经找到了很多关于从D主(C)调用C或C++函数的教程,但是你怎么走?

有没有办法从C或C+调用D函数+;main()? 我正在为一个类做消息传递,我想用C或C++主函数调用一个D函数。我已经找到了很多关于从D主(C)调用C或C++函数的教程,但是你怎么走?,d,D,我尝试了一些资源,比如 及 谢谢你的帮助 对于简单的事情,只需链接libphobos: $ cat main.cpp #include <stdio.h> void foo(int num) { //Does the FizzBuzz program for(int i = 0; i < num; i++){ if(i%3 == 0) printf("fizz\n"); if(i%5 == 0) prin

我尝试了一些资源,比如 及


谢谢你的帮助

对于简单的事情,只需链接libphobos:

$ cat main.cpp 
#include <stdio.h>

void foo(int num)
{
    //Does the FizzBuzz program
    for(int i = 0; i < num; i++){
     if(i%3 == 0)
        printf("fizz\n");
     if(i%5 == 0)
        printf("buzz\n");
     if(i%3 == 0 && num%5 == 0)
        printf("Fizzbuzz\n");
    }
}

void bar();

int main()
{
    bar();
    return 0;
}

$ cat foobar.d
extern(C++) int foo(int i);

extern(C++) void bar()
{
    foo(100);
}

$ dmd -c foobar.d

$ g++ main.cpp foobar.o -lphobos2

$ ./a.out | head
fizz
buzz
Fizzbuzz
fizz
Fizzbuzz
buzz
fizz
Fizzbuzz
fizz
Fizzbuzz
$cat main.cpp
#包括
void foo(int num)
{
//FizzBuzz节目吗
for(int i=0;i

如果D代码需要D运行时工作,例如使用垃圾收集,那么它确实会涉及更多问题。在这种情况下,运行时需要显式初始化。

自2.079以来,so现在也可以无缝工作,但对于D模块构造函数,仍然需要运行时初始化。不过刚刚打过电话。值得指出的是,对于标准库,所有模块都是在没有D模块构造函数的情况下初始化的,这完全是因为不需要做<代码> RTIIN < /COD>。我还有两个问题,1)如果我想去C主(),我会拿出C++中的2和2),对于C连接来说,最好使用DMD或GDC?使用
extern(C)
2)使用适合您需要的编译器:D文档在这里解释了这一点(用一个例子!):
int foo(int i);

void bar()
{
    foo(100);
}
$ cat main.cpp 
#include <stdio.h>

void foo(int num)
{
    //Does the FizzBuzz program
    for(int i = 0; i < num; i++){
     if(i%3 == 0)
        printf("fizz\n");
     if(i%5 == 0)
        printf("buzz\n");
     if(i%3 == 0 && num%5 == 0)
        printf("Fizzbuzz\n");
    }
}

void bar();

int main()
{
    bar();
    return 0;
}

$ cat foobar.d
extern(C++) int foo(int i);

extern(C++) void bar()
{
    foo(100);
}

$ dmd -c foobar.d

$ g++ main.cpp foobar.o -lphobos2

$ ./a.out | head
fizz
buzz
Fizzbuzz
fizz
Fizzbuzz
buzz
fizz
Fizzbuzz
fizz
Fizzbuzz