System.Runtime.InteropServices를 사용하여 C# 응용 프로그램에서 C++로 작성된 여러 함수를 호출합니다. 배열을 반환하는 특정 함수에 문제가 있습니다.C#에서 C++ DLL 래핑 문제
필자는 필자의 함수에서 아무 것도 반환하지 말아야하고 "반환 변수"에 대한 포인터가 엔트리 여야합니다. 하지만 제대로 관리하지 못합니다. 예컨대
I는 C++에서 함수 배열을 조작 X 및 Y 배열을 반환
void func(double *y, double *x){...}
있는 경우.
내가하고 있어요 :
내 .H -in :
static class AnyClass
{
[DllImport(dllPath)]
public extern static void func(out double[] y, double[] x);
int otherfunc
{
double[] x = new double[5];
double[] y = new double[5];
...
func(out y, x);
}
}
: 내 C# 코드 -in
__declspec(dllexport) void func(double *y,double *x){...}
: 내 cpp를 -in
extern "C" __declspec(dllexport) void func(double *y,double *x);
하지만 System.EntryPointNotFoundException을 제공합니다.
단서가 있습니까?
'func'과'function' 이름이 맞습니까? 왜냐하면 그들은 평등하게 보이지 않기 때문입니다 ... – Timbo
첫 번째 코드 단편은 두 번째 매개 변수로 "x"를 가지고, 나중에있는 단락은 역순으로 나타납니다. 명확성을 위해 일관성있게 작성해야합니다. –
그리고 함수는 크기가 5 인 배열에서만 작동합니까? 또는 크기 매개 변수가 필요합니까? – crashmstr