/// Return Type: int ///modelName: char* ///sID: int* ///sModelStepSize: double* public delegate int pGetSubEngineID(System.IntPtr modelName, ref int sID, ref double sModelStepSize);/// Return Type: int ///StepSize: double* public delegate int pGetBaseStepSize(ref double StepSize);/// Return Type: int public delegate int pInitDataBus();/// Return Type: int public delegate int pReleaseDataBus();/// Return Type: int ///modelID: int ///opt: int ///nID: int ///szData: char* ///nDataLen: int public delegate int pSimDataWrite(int modelID, int opt, int nID, [System.Runtime.InteropServices.InAttribute()] [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string szData, int nDataLen);/// Return Type: int ///modelID: int ///opt: int ///nID: int public delegate int pSimDataClear(int modelID, int opt, int nID);/// Return Type: int ///modelID: int ///opt: int ///nID: int ///szData: char* ///nDataLen: unsigned int ///nDataSliceNumberMax: unsigned int ///nDataSliceNumber: unsigned int* public delegate int pSimDataRead(int modelID, int opt, int nID, System.IntPtr szData, uint nDataLen, uint nDataSliceNumberMax, ref uint nDataSliceNumber);/// Return Type: int ///modelID: int ///opt: int ///nID: int ///szData: char* ///nDataLen: unsigned int ///nDataSliceNumberMax: unsigned int ///nDataSliceNumber: unsigned int* public delegate int pSimDataTake(int modelID, int opt, int nID, System.IntPtr szData, uint nDataLen, uint nDataSliceNumberMax, ref uint nDataSliceNumber);/// Return Type: int ///modelID: int ///opt: int ///nID: int ///szData: char* ///nDataLen: unsigned int ///nDataSliceNumberMax: unsigned int ///nDataSliceNumber: unsigned int* ///nSec: unsigned int public delegate int pSimDataTakeWithWaitCondition(int modelID, int opt, int nID, System.IntPtr szData, uint nDataLen, uint nDataSliceNumberMax, ref uint nDataSliceNumber, uint nSec)
谢谢回帖,我也参考了类似的文章,但还是报函数签名不一致。我猜可能是在c++里的const 参数引起的,但是C#里不能在参数上加Const啊,此处该如何处理?
///modelName: char*
///sID: int*
///sModelStepSize: double*
public delegate int pGetSubEngineID(System.IntPtr modelName, ref int sID, ref double sModelStepSize);/// Return Type: int
///StepSize: double*
public delegate int pGetBaseStepSize(ref double StepSize);/// Return Type: int
public delegate int pInitDataBus();/// Return Type: int
public delegate int pReleaseDataBus();/// Return Type: int
///modelID: int
///opt: int
///nID: int
///szData: char*
///nDataLen: int
public delegate int pSimDataWrite(int modelID, int opt, int nID, [System.Runtime.InteropServices.InAttribute()] [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string szData, int nDataLen);/// Return Type: int
///modelID: int
///opt: int
///nID: int
public delegate int pSimDataClear(int modelID, int opt, int nID);/// Return Type: int
///modelID: int
///opt: int
///nID: int
///szData: char*
///nDataLen: unsigned int
///nDataSliceNumberMax: unsigned int
///nDataSliceNumber: unsigned int*
public delegate int pSimDataRead(int modelID, int opt, int nID, System.IntPtr szData, uint nDataLen, uint nDataSliceNumberMax, ref uint nDataSliceNumber);/// Return Type: int
///modelID: int
///opt: int
///nID: int
///szData: char*
///nDataLen: unsigned int
///nDataSliceNumberMax: unsigned int
///nDataSliceNumber: unsigned int*
public delegate int pSimDataTake(int modelID, int opt, int nID, System.IntPtr szData, uint nDataLen, uint nDataSliceNumberMax, ref uint nDataSliceNumber);/// Return Type: int
///modelID: int
///opt: int
///nID: int
///szData: char*
///nDataLen: unsigned int
///nDataSliceNumberMax: unsigned int
///nDataSliceNumber: unsigned int*
///nSec: unsigned int
public delegate int pSimDataTakeWithWaitCondition(int modelID, int opt, int nID, System.IntPtr szData, uint nDataLen, uint nDataSliceNumberMax, ref uint nDataSliceNumber, uint nSec)