如何将双指针从 C++ 传递到 C#

How to pass a double pointer from C++ to C#

我有一个 C++ cli 程序,它向 C# 包装器传递一个双精度值。

这是我的 C++ 程序

MY_DLL_API void __cdecl PassValue(double *value,) {
CSharpWrapper^ CSharpWrapperAPI = gcnew CSharpWrapper();
CSharpWrapperAPI ->PassValue(*value);

return;

}

和我的 C# 程序

 public unsafe void PassValue(double *newValue)
    { // some calcuation }

并且出现编译器错误:无法将参数 2 从 'double' 转换为 'double *' 怎么来的?两个接口一样吗?

您正在取消对 double* 的引用,从而产生一个双精度值。

这个:

CSharpWrapperAPI ->PassValue(*value);

应该是这样的:

CSharpWrapperAPI ->PassValue(value);