gpt4 book ai didi

c# - P/invoke System.ExecutionEngineException 将数组作为 ref/out 传递时

转载 作者:行者123 更新时间:2023-11-30 13:34:13 25 4
gpt4 key购买 nike

我正在对非托管 dll 函数 swe_calc_ut 使用 P/调用。

int swe_calc_ut(double tjd_et, int ipl, int iflag, double *xx, char *serr)

参数 xx 是一个“用于存储结果的 6 个 double 组”,参数 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);

现在,当我执行函数 swe_calc_ut 函数时,我收到错误“抛出类型为‘System.ExecutionEngineException’的异常。”。我是 P/invoke 的新手,所以我可能犯了一个愚蠢的错误。我认为它一定是数组,因为早些时候我不小心按值传递它们时我没有得到错误。非常感谢您的帮助。

最佳答案

您不必在此处使用outref。事实上,两者都失去了。并在 C# 中将两个数组预分配为所需的大小。

关于c# - P/invoke System.ExecutionEngineException 将数组作为 ref/out 传递时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3645589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com