P/Invoke 호출에 문제가 있습니다. C# 프로그램에서 C++ 클래스를 호출해야합니다. 이 클래스의 소스를 가지고 있으므로 DLL 프로젝트에 넣고 주요 함수에 액세스하는 내보내기 함수를 만듭니다. 그게 내가해야 할 일을하고 일을 간단하게하기에 충분할거야.P/Invoke로 이중 매개 변수를 마샬링
extern "C" _declspec(dllexport) void Inference(double *c1, double *c2, double *c3, double *result)
{
/* somecode */
}
이 컴파일하고 나는 dumpbin
출력의 수출을 볼 수
내 수출 방법은 다음과 같습니다.
이제 문제는 내가 항상 PInvokeStackInbalance
예외가 때문에 관리 의 PInvoke 서명이 일치하지 않기 때문에
나는이와 메서드를 호출 시도 :이 가능성이 높다고 말해, 내 C# 코드에서이 메소드를 호출 할 수 없다 관리되지 않는 대상 서명입니다.
[DllImport("InferenceEngine.dll")]
extern static unsafe void Inference(double *c1, double *c2, double *c3, double *result);
가 나는 또한이 시도 : MSDN에하지만 행운과 문서화 두 가지 방법이었다
[DllImport("InferenceEngine.dll")]
extern static void Inference(ref double c1, ref double c2, ref double c3, ref double result);
.... 문제가 무엇인지 아무도 모른다.
감사합니다. 는 P입니다 __stdcall
로
C# 코드에서 'C++ 클래스'를 호출 할 수 없습니다. 그것은 하나처럼 보이지 않습니다. –
'ref double' 또는'out double'은 매개 변수를 선언하는 올바른 방법입니다 - 도움이된다면'unsafe'를 사용하지 마십시오 –
Hans : extern 함수는 클래스는 아니지만 클래스를 실제로 호출합니다 . 방금 외부에서 전화를 걸기 위해 간단한 functoin을했습니다. – Shtong