외장 DLL 방법이있다 : 출력, 처리하는 *의 INT와 * 더블 방법을 묻는대로 나는 C#에서 매개 변수를 전달할 수있는 방법패스 올바른 매개 변수
public unsafe static void BV([In] int* key, [In] int* m, [In] int* n, [In] double* a, [In] double* b, [In] double* bl, [In] double* bu, [Out] double* x, [Out] double* w, [In] double* act, [In] double* zz, [Out] double* istate, [Out] int* loopa)
은 ?
예제 코드에서는 메서드에서 필요로 할 때 매개 변수를 전달할 수 없습니다. 뭐가 잘못 됐어? 내가 잘못 뭐하는 거지
int key = 0, n = 2, m = 3;
double[] a = { 1.0, 2.0, 3.0, 4.0, 5.0 };
double[] b = { 10.0, 20.0, 30.0 };
double[] bl = { 0.0, 1.0 };
double[] bu = { 1.0, 2.0 };
double[] x = new double[n];
double[] w = new double[n];
double[] act = new double[m * (Math.Min(m, n) + 2)];
double[] zz = new double[m];
double[] istate = new double[n + 1];
int loopA = 0;
bvlsFortran.BV(key,m,n,a,b,bl,bu, x,w,act,zz,istate,loopA); //bvlsFortran is dll file
Console.WriteLine(loopA);
는 또한
bvlsFortran.BV(key,m,n,a,b,bl,bu, out x,out w,act,zz,out istate, out loopA);
및
bvlsFortran.BV(ref key,ref m,ref n,ref a,ref b,bl,bu, out x,out w,act,zz,out istate, out loopA);
으로 노력했지만 그들은 를 작동하지 않는
마샬을 사용하여 안전한 상황에서 사용할 수 있습니까? – cMinor
@cMinor C++/CLI 래퍼를 사용하기 위해 C#에서 안전하지 않은 코드 사용을 피하는 유일한 방법 – Uriil
이중 * []로이 기술을 어떻게 적용합니까? 이중으로 * aP = (double *) &a ...;이 작동하지 않습니다 – cMinor