C# 调用C++ DLL,dll返回值类型为void*,需要强制转换为struct*,并接收。

C++导出函数 JR_API void* MicrodebProcess(float* p_aibk);
C#接收方式:MicroAnnulusOutput* pout = (MicroAnnulusOutput*)MicrodebProcess(&AIBK);
MicroAnnulusOutput为结构体

然后你具体的问题是?


        struct MicroAnnulusOutput {
            xxxx
            xxxx
        }

        [DllImport("xxxxxx")]
        static extern MicroAnnulusOutput MicrodebProcess(float p_aibk);

C#中,定义外部引用返回值为IntPtr类型,
[DllImport("xxxxxx")]
static extern IntPtr MicrodebProcess(ref float p_aibk);//传入的是float值
static extern IntPtr MicrodebProcess(float[] p_aibk);//传入的是flaot数组

调用的时候,
IntPtr intPtr = MicrodebProcess(ref p_aibk);
MicroAnnulusOutput p_MicroAnnulusOutput;//定义的MicroAnnulusOutput 结构体需要与C++保持一致
Marshal.PtrToStructure(intPtr, p_MicroAnnulusOutput);

你试下这样可行不