c++:_declspec (dllexport) float* WINAPI shuju(float pv1[],float pv2[],float pv3[],float pv4[])
9 个解决方案
#1
返回数组名称就好了。
#2
[DllImport("sqlite3.dll", EntryPoint = "sqlite3_open",CallingConvention=CallingConvention.Cdecl)]
public static extern IntPtr shuju(float[] pv1,float[] pv2,float[] pv3,float[] pv4);
#3
先试试2楼的办法吧。
#4
这个方法我试过,但是 InPre inpre=shuju(a,b,c,d);
console.write(inpre);
好像得出的是八位的地址,我该怎么得出我想要的数值呢?
#5
[DllImport("sqlite3.dll", EntryPoint = "sqlite3_open",CallingConvention=CallingConvention.Cdecl)]
public static extern float[] shuju(float[] pv1,float[] pv2,float[] pv3,float[] pv4);
......
float[] fs = shuju(a,b,c,d);
console.write(fs[0]);
#6
"这个方法我试过,但是 InPre inpre=shuju(a,b,c,d);
console.write(inpre);
好像得出的是八位的地址,我该怎么得出我想要的数值呢?"
使用这个:Marshal.Copy 方法 (IntPtr, Single[], Int32, Int32)
将数据从非托管内存指针复制到托管单精度浮点数组。
public static void Copy (
IntPtr source,
float[] destination,
int startIndex,
int length
)
console.write(inpre);
好像得出的是八位的地址,我该怎么得出我想要的数值呢?"
使用这个:Marshal.Copy 方法 (IntPtr, Single[], Int32, Int32)
将数据从非托管内存指针复制到托管单精度浮点数组。
public static void Copy (
IntPtr source,
float[] destination,
int startIndex,
int length
)
#7
使用float*.直接用不可以嘛?只要加一个unsafe。挺好的。不需要转换。也安全。
#8
不知道找到方法没?我也纠结于这个问题,难道一定要把返回值放入参数中传递吗?不能作为结果返回?
#9
借宝地向大家求教一下类似的问题。
我的问题是,函数返回值是结构体指针,C#这边代码不知道怎么写,加ref提示是不行的,
public static extern ref Struct myfun();
这么写是不行的,求高手指点。
我的问题是,函数返回值是结构体指针,C#这边代码不知道怎么写,加ref提示是不行的,
public static extern ref Struct myfun();
这么写是不行的,求高手指点。
#1
返回数组名称就好了。
#2
[DllImport("sqlite3.dll", EntryPoint = "sqlite3_open",CallingConvention=CallingConvention.Cdecl)]
public static extern IntPtr shuju(float[] pv1,float[] pv2,float[] pv3,float[] pv4);
#3
先试试2楼的办法吧。
#4
这个方法我试过,但是 InPre inpre=shuju(a,b,c,d);
console.write(inpre);
好像得出的是八位的地址,我该怎么得出我想要的数值呢?
#5
[DllImport("sqlite3.dll", EntryPoint = "sqlite3_open",CallingConvention=CallingConvention.Cdecl)]
public static extern float[] shuju(float[] pv1,float[] pv2,float[] pv3,float[] pv4);
......
float[] fs = shuju(a,b,c,d);
console.write(fs[0]);
#6
"这个方法我试过,但是 InPre inpre=shuju(a,b,c,d);
console.write(inpre);
好像得出的是八位的地址,我该怎么得出我想要的数值呢?"
使用这个:Marshal.Copy 方法 (IntPtr, Single[], Int32, Int32)
将数据从非托管内存指针复制到托管单精度浮点数组。
public static void Copy (
IntPtr source,
float[] destination,
int startIndex,
int length
)
console.write(inpre);
好像得出的是八位的地址,我该怎么得出我想要的数值呢?"
使用这个:Marshal.Copy 方法 (IntPtr, Single[], Int32, Int32)
将数据从非托管内存指针复制到托管单精度浮点数组。
public static void Copy (
IntPtr source,
float[] destination,
int startIndex,
int length
)
#7
使用float*.直接用不可以嘛?只要加一个unsafe。挺好的。不需要转换。也安全。
#8
不知道找到方法没?我也纠结于这个问题,难道一定要把返回值放入参数中传递吗?不能作为结果返回?
#9
借宝地向大家求教一下类似的问题。
我的问题是,函数返回值是结构体指针,C#这边代码不知道怎么写,加ref提示是不行的,
public static extern ref Struct myfun();
这么写是不行的,求高手指点。
我的问题是,函数返回值是结构体指针,C#这边代码不知道怎么写,加ref提示是不行的,
public static extern ref Struct myfun();
这么写是不行的,求高手指点。