C和D通信

Sea*_*ean 9 c d

我读这个是为了做我的方法

我有一个文件:software_pluginInterface.di

我在这里声明:

extern (C): void performComputation(char lib[], char func[], void* ptr[], int varNum );
// lib and func will be used later
Run Code Online (Sandbox Code Playgroud)

然后我有相应的C文件:software_pluginInterface.c,我声明:

#include "stdio.h"
#include "string.h"

void performComputation(char lib[], char func[], void * v[], int varNum)
{

  printf("there are %d variables \n", varNum);

}
Run Code Online (Sandbox Code Playgroud)

然后我称之为:

performComputation(A, B, V, to!int(v.count()/3));
Run Code Online (Sandbox Code Playgroud)

A,B是'\ 0'终止char arrarys V是一个带有6个元素的void指针数组

所以我希望输出如下:有2个变量

但我得到:有1557197040变量

我有64位操作系统,我使用编译它(如在另一个问题中)

gcc -c software_pluginInterface.c
dmd software.d software_pluginInterface.o
Run Code Online (Sandbox Code Playgroud)

然后我用:./ software来打电话给他们

PS:根据此页面,D int与C ints相同.

Orv*_*ing 10

在D中,数组由指向某些数据的指针和长度组成,在C++中,它基本上只是一个指针.这意味着您的D函数应声明为:

extern (C): void performComputation(char* lib, char* func, void** ptr, int varNum );
Run Code Online (Sandbox Code Playgroud)