我在非托管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的新手,所以我可能犯了一个愚蠢的错误.我认为它必须是数组,因为早些时候我偶然通过值传递它我没有得到错误.我非常感谢你的帮助.