测试-使用c# DLL使用c#包装器使用C DLL

本文关键字:使用 DLL 测试 包装 | 更新日期: 2023-09-27 18:16:36

有一个我用作DLL的c函数。函数由

导出
__declspec(dllexport) uint8_t *SomeFunction(uint8_t *a);

在各自的头文件中。

包装器用

导入函数
[DllImport("SomeCFunction.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SomeFunction")]
private static extern IntPtr SomeFunction(Byte[] array1);

包装器有一个方法,该方法包含对该函数的调用

public unsafe Byte[] SomeFunction(Byte[] array1, Byte[] array2)
{
    IntPtr parray2 = CalculateKeyFromSeed(array1);
}

现在我得到错误时执行步骤在TestStand:

在调用。net成员时发生异常"SomeFunction":系统。BadImageFormatException:错误因此,所有的数据都是基于数据格式的。(Ausnahme冯结果:0x8007000B) beiSomeFunctionWrapperNameSpace.WrapperClass.SomeFunction (Byte []array1)贝WrapperNameSpace.WrapperClass.SomeFunction (Byte []array1, Byte[] array2) inSomeFunctionWrapper.cs: Zeile33. bei SomeFunction(Byte[] array1, Byte[] array2) inSomeFunction.cs: Zeile 39 .

一些想法我如何得到TestStand接受这个DLL?

测试-使用c# DLL使用c#包装器使用C DLL

badmageformat通常意味着其中一个部分的位不匹配。

这些需要匹配,你有3个部分检查

  • C dll是64位吗?
  • c# dll是64位的吗?(任何cpu在这里应该是OK的)TestStand进程是64位的吗?