C#调用C DLL 结构体中包含参数基本类型加指针 20
Ctypedefstruct{doubleh;/*Integrationstepsize*/double*w;/*Floatworkspace*/long*iw;/*In...
C
typedef struct {
double h; /* Integration step size */
double *w; /* Float workspace */
long *iw; /* Integer workspace */
long err; /* Error flag */
char *buf; /* Error message */
} SolverStruct;
在C#中如何申明和调用C编成的DLL文件?
[DllImport("CarDLL6")]
unsafe private static extern void SolverOutputs(double[] y,SolverStruct *S,double* out1);
SolverStruct S;
怎么修改dll的申明和在C#中定义上述的结构体? 展开
typedef struct {
double h; /* Integration step size */
double *w; /* Float workspace */
long *iw; /* Integer workspace */
long err; /* Error flag */
char *buf; /* Error message */
} SolverStruct;
在C#中如何申明和调用C编成的DLL文件?
[DllImport("CarDLL6")]
unsafe private static extern void SolverOutputs(double[] y,SolverStruct *S,double* out1);
SolverStruct S;
怎么修改dll的申明和在C#中定义上述的结构体? 展开
展开全部
CHAR* 可以先实例化一个StringBuilder然后可以传给char*类型
关于其他的请参考msdn中的c++与c#的类型转换
对应关系如下:
C++ ---- C#
传入的char* ----string
传出的char* ---- StringBuilder(预分配空间)
short ----short
char ---- byte
char[n] ---- fixed byte[n]
结构指针 ----结构指针
函数指针 ---- 委托
里面涉及到函数指针,在C#里面用委托替代,总的代码如下:
delegate int pfunc(void* dst,void* src,int nSize);
unsafe public struct MyStruct
{
public Byte* pMemory;//也可以用unsinged int替代(uint*)
public pfunc myfunc;//这里用委托替代函数指针
public char[] rd;//声明的时候不能指定大小,可以在new的时候指定大小
}
关于其他的请参考msdn中的c++与c#的类型转换
对应关系如下:
C++ ---- C#
传入的char* ----string
传出的char* ---- StringBuilder(预分配空间)
short ----short
char ---- byte
char[n] ---- fixed byte[n]
结构指针 ----结构指针
函数指针 ---- 委托
里面涉及到函数指针,在C#里面用委托替代,总的代码如下:
delegate int pfunc(void* dst,void* src,int nSize);
unsafe public struct MyStruct
{
public Byte* pMemory;//也可以用unsinged int替代(uint*)
public pfunc myfunc;//这里用委托替代函数指针
public char[] rd;//声明的时候不能指定大小,可以在new的时候指定大小
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询