C#调用dephi写的dll出错-大家帮帮我啊?

an_ding 2009-03-10 12:50:29

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);
...全文
118 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿达King哥 2009-03-22
  • 打赏
  • 举报
回复
MFC中的double是多少位的,C#中的Double是多少位的。呵呵。
你试试把double换成float试试。
an_ding 2009-03-22
  • 打赏
  • 举报
回复
没有人用过这方面的吗?
an_ding 2009-03-10
  • 打赏
  • 举报
回复
等待中......

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧