我已经获得了将一些库例程移植到C#的任务,因此我们的其他应用程序开发人员可以访问它,但我不知道如何声明变量以便它们正确地进入例程.
原文链接:https://www.f2er.com/windows/363480.html问题是,当我逐步读入带有C代码的输入时,我得到所有偏斜的值
尝试使用:
double[] Par = { 8,16,8,0.61,0.00635,... }; // 29 variables double[] Inlet = { 22.18,43.31,1.13,2.81,0.43 }; // 5 variables double[] Outlet = { 0,0 }; // placeholder for 6 variables SteadyFor(ref Par,ref Inlet,ref Outlet,FileIn,FileOut);
DLL导入
[DllImport(MODELAPP,EntryPoint = "SteadyFor",ExactSpelling = false)] public static extern int SteadyFor( ref double[] par,ref double[] inlet,ref double[] outlet,[MarshalAs(UnmanagedType.LPStr)] string input,[MarshalAs(UnmanagedType.LPStr)] string output);
C文件:
extern "C" int SteadyFor(double Par[],double Inlet[],double Outlet[],char* FileIn,char* FileOut) { int n = (int)Par[0]; // Actual Reading: [0] int nt = (int)Par[1]; // Actual Reading: [0] int pass = (int)Par[2]; // Actual Reading: [0] double l = Par[3]; // Actual Reading: [2.9581223236733198e+174] double rTube = Par[4]; // Actual Reading: [2.121995790965e-314#DEN] double tTube = Par[5]; // Actual Reading: [5.432309224896e-312#DEN] double pl = Par[6]; // Actual Reading: [1.0253217546256438e-267] double pt = Par[7]; // Actual Reading: [4.60629e-308] // ... }
显然,我得到的值都是错的 – 几乎就像非初始化的内存.
有人能告诉我我做错了什么以及如何解决它?
问候,
〜乔