测试-使用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?
badmageformat通常意味着其中一个部分的位不匹配。
这些需要匹配,你有3个部分检查
- C dll是64位吗? c# dll是64位的吗?(任何cpu在这里应该是OK的)TestStand进程是64位的吗?