C#调用dephi写的dll出错-大家帮帮我啊?
dll函数原型:
type dblarray=array[1..4] of double;ParaType=array of double; angarray=array[1..2] of double;
ParaType2=array[1..7] of double;ParaType3=array[1..6] of double;
function Calfugai(BSPara:ParaType2;ScenePara:ParaType3;ValueH:ParaType;
Horizang:ParaType;ValueV:ParaType;Vertang:ParaType):dblarray;StdCall;
(代码略)
Dephi中可以使用成功
声明:
type dblarray=array[1..4] of double;ParaType4=array[1..74] of double;
ParaType2=array[1..7] of double;
ParaType3=array[1..6] of double;ParaType=array of double;
function Calfugai(BSPara:ParaType2;ScenePara:ParaType3;AtnHorPara:ParaType;
AtnHorSamp:ParaType;AtnVertPara:ParaType;AtnVertSamp:ParaType):dblarray;StdCall;
external 'simout.dll';
调用:
funcren:=Calfugai(BSPara,ScenePara,AtnHorPara,AtnHorSamp,AtnVertPara,AtnVertSamp);
Edit1.Text:=FloatToStr(funcren[1]);
Edit3.Text:=FloatToStr(funcren[2]);
Edit4.Text:=FloatToStr(funcren[3]);
CoverArea:=PI*funcren[3]*funcren[3];
我在C#中使用老是出错
无法封送处理“return value”: 无效的托管/非托管类型组合。
[DllImport("simout.dll", EntryPoint = "Calfugai", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling =
true, CallingConvention = CallingConvention.StdCall)]
public static extern double[] Calfugai(double[] BSPara, double[] ScreenPara,
double[] AtnHorPara, double[] AtnHorSamp, double[] AtnVertPara, double[] AtnVertSamp);
//测试数据,6个参数
double[] BSPara ={100.01,40.22,41,30,45,8,100 };(略)
double[] reuslt = simoutdll.Calfugai(BSPara, ScreenPara, AtnHorPara, AtnHorSamp,
AtnVertPara, AtnVertSamp);