调用某个C++ dll函数时发生系统访问冲突错误。(参考下面的代码-在步骤int calresult =...即,)所有数组值都适当地给出了。输入的哪个部分可能会导致此错误?
谢谢!
C++代码-xyz.dll:
typedef struct model_parameters_t
{
uint16_t *Input4;
uint16_t *Input5;
} ;
typedef struct calibration_set_s
{
uint16_t *input1;
uint16_t *input2;
uint16_t input3;
model_parameters_t model;
} calibration_t;
extern "C"
{
uint16_t compute(calibration_t);
}C#代码:
public struct model_parameters_t
{
uint16_t [] Input4;
uint16_t [] Input5;
} ;
public struct calibration_set_s
{
uint16_t []input1;
uint16_t []input2;
uint16_t input3;
model_parameters_t model;
} calibration_t;
[DllImport(@"xyz.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern int compute(calibration_set_s calibration_set_t);
public class trycompute
{
calibration_set_s calibration_set_Cal_input = new calibration_set_s();
calibration_set_Cal_input.input1= array;
calibration_set_Cal_input.input2= array;
calibration_set_Cal_input.input3= 12;
calibration_set_Cal_input.model.input4 = array;
calibration_set_Cal_input.model.input5 = array;
int CalResult = computeHybridCalCoeffs(calibration_set_Cal_input);
}发布于 2018-01-02 18:07:16
在声明类unsafe时,在C#的结构中使用实际的指针而不是数组。
C#没有办法知道如何封送结构中的数组,例如,数组的大小是未定义的。
发布于 2018-01-08 15:16:55
谢谢你的建议。
我不得不用C++ /CLI语言为我的本机C++动态链接库创建一个包装器。然后,我从C#代码中调用了包装器中的函数。这就解决了问题。
https://stackoverflow.com/questions/48054251
复制相似问题