小编smk*_*cmn的帖子

将数组作为ref/out传递时,调用System.ExecutionEngineException

我在非托管DLL函数swe_calc_ut上使用P/invoke.

int swe_calc_ut(double tjd_et, int ipl, int iflag, double *xx, char *serr)
Run Code Online (Sandbox Code Playgroud)

参数xx是"用于存储结果的6个双精度数组",参数serr是"返回错误消息的字符串"


我的c#代码如下.

[DllImport("swedll32.dll")]
private static extern int swe_calc_ut(double tjd_ut, int ipl, int iflag, out double[] xx, out char[] serr);

double jul_day_UT=22000;
int p=3;
int iflag=64 * 1024;
double[] arr;
char[] serr;

int x = swe_calc_ut(jul_day_UT, p, iflag , out arr, out serr);
Run Code Online (Sandbox Code Playgroud)

现在当我执行函数swe_calc_ut函数时,我得到错误"抛出类型'System.ExecutionEngineException'的异常.".我是P/invoke的新手,所以我可能犯了一个愚蠢的错误.我认为它必须是数组,因为早些时候我偶然通过值传递它我没有得到错误.我非常感谢你的帮助.

.net c# pinvoke dllimport

3
推荐指数
2
解决办法
1248
查看次数

标签 统计

.net ×1

c# ×1

dllimport ×1

pinvoke ×1