gpt4 book ai didi

c# - 在 C# 中调用 c++ dll 函数时发生访问冲突

转载 作者:太空宇宙 更新时间:2023-11-04 12:53:01 25 4
gpt4 key购买 nike

调用其中一个 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);
}

最佳答案

在 C# 中的结构中使用实际指针而不是数组,声明类不安全

C# 无法知道如何在 struct 中编码数组,例如,数组的大小是未定义的。

关于c# - 在 C# 中调用 c++ dll 函数时发生访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48054251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com