C#에서 C++ 라이브러리의 기능을 복제하려고하는데 그 기능 중 하나는 외부에 일부 기능을 제공 할 수 있다는 것입니다.C# 관리되지 않는 내보내기 MissingMethodException
이제 SetAllAnalog()를 호출하면 아래에서 언급 한 예외가 발생합니다. 이것은 실제로 문제를 해결하는 방법이 아닙니다. 왜냐하면 내가 내보낼 다른 함수에 내부 함수를 래핑 할 수 있기 때문입니다.
내가 왜 이런 일이 벌어지고 있고, 이미 언급 된 문제 이외의 문제를 해결할 수있는 더 좋은 방법이 있는지 알고 싶습니다.
나는 다음 코드를했다 :
[DllExport("OutputAllAnalog", CallingConvention = CallingConvention.StdCall)]
public static void OutputAllAnalog(int Data1, int Data2)
{
if (!_k8055D.Connected || Data1 < 0 || 255 < Data1 ||
Data2 < 0 || 255 < Data2) return;
_k8055D.AnalogOutputChannel[0] = (double)Data1/255 * 5;
_k8055D.AnalogOutputChannel[1] = (double)Data2/255 * 5;
}
[DllExport("SetAllAnalog", CallingConvention = CallingConvention.StdCall)]
public static void SetAllAnalog()
{
OutputAllAnalog(255, 255); //exception
test(); //No exception
}
public static void test()
{
}
예외 : 당신이 DllExport의 기능에 대해 서로 다른 이름을 사용하여 시도해 봤어
An unhandled exception of type 'System.MissingMethodException' occurred in K8055Test.exe
Additional information: Method not found: 'Void K8055Simulation.K8055.OutputAllAnalog(Int32, Int32)'.
아직 시도하지는 않았지만 대답이 굉장히 많이 들었습니다. 쉬운 루트로 이동하여 기능을 내보내고 내부 메서드를 호출하는 별도의 메서드가 있습니다. – Encore