我读这个是为了做我的方法
我有一个文件: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)
归档时间: |
|
查看次数: |
241 次 |
最近记录: |