DllImport-方法'类型签名与PInvoke不兼容

w

新成员
已加入
2014年7月8日
留言内容
2
编程经验
10+
已经为我提供了一个C ++ DLL,该C ++ DLL需要在我的C#项目中引用。我最近使用该DLL会产生一个异常:

"Method'类型签名与PInvoke不兼容."

这是一个简单的DLL,因为只有单个输入对象和单个输出对象的方法。输入和输出对象都是一个布尔值的Double和Int整数。这是我的代码:

C#:
[StructLayout(LayoutKind.Sequential)]
    public struct MyDLLInput
    {
    public int ProductModel;
             public int Length;
             public double Scale;
             public int CalculationMethod;

             [... additional double/int omitted for brevity ...]

   };

C#:
[StructLayout(LayoutKind.Sequential)]
    public struct MyDLLOutput
    {
             public int ProductModel;
             public int Length;
             public double Scale;
             public int CalculationMethod;
             public bool Warning_out_of_bounds;
             public double version;
    };

C#:
public class MYDLL
    {
[DllImport("MyDLLProductSelector.dll", 
                EntryPoint="[email protected]@[email protected]@[email protected]@@Z")]
        public static extern MyDLLOutput Unit(MyDLLInput UnitInput);
    }

我尝试像这样调用DLL的Unit()方法:

C#:
MyDLLInput myDllInput = new MyDLLInput();

         MyDLLInput.ProductModel = 0;
         MyDLLInput.Length = 0;
         MyDLLInput.Scale = 85;  
         MyDLLInput.CalculationMethod = 85;
            
         MyDLLOutput myDllOutput = MYDLL.Unit(myDllInput);   <---- Exception thrown


C#:
"Method'类型签名与PInvoke不兼容."

我已经准备了很多有关如何执行此操作的主题-有很多不同的方法。我看到许多关于此类问题的问题,并且我已逐一阅读。我完全不知道自己在做错什么,或者我需要做些其他工作才能完成这项工作。有人看到我需要做些什么才能完成这项工作吗?
 
最佳 底部