C++ cli 将PInvoke调用转换为C++/CLI 我的C++ DLL有以下功能: void allocate(double *&arr_not_allocated, UINT &arrayCount); 通常,我从C++中传递到C++: 我只是想知道,用C++ + CLI代替C++ C是什么等价调用C++?p>

C++ cli 将PInvoke调用转换为C++/CLI 我的C++ DLL有以下功能: void allocate(double *&arr_not_allocated, UINT &arrayCount); 通常,我从C++中传递到C++: 我只是想知道,用C++ + CLI代替C++ C是什么等价调用C++?p>,c++-cli,pinvoke,C++ Cli,Pinvoke,我还应该注意,我不希望将分配的数组保存在托管内存中(仅在非托管内存中),因此我不想封送托管端的任何结构。 我只想从C++中获取本地指针,并可能将来将非托管数组的地址传递回C++。这就是为什么我过去在P/Invoke中使用IntPtr 谢谢

我还应该注意,我不希望将分配的数组保存在托管内存中(仅在非托管内存中),因此我不想封送托管端的任何结构。 我只想从C++中获取本地指针,并可能将来将非托管数组的地址传递回C++。这就是为什么我过去在P/Invoke中使用IntPtr


谢谢
double* arr_not_allocated;
UINT arrayCount = whatever;
allocate(arr_not_allocated, arrayCount);
/* now both arrayCount and arr_not_allocated have been updated by the function */
如果没有导入库,则可能必须使用
LoadLibrary()
并将结果句柄传递给
GetProcAddress
GetProcAddress
的结果转换为正确的函数指针类型,即
typedef void(*allocate_fnptr)(double*&,UINT&)


我没有包括呼叫约定,因为您的问题没有指定。但您可能需要在函数指针类型中插入
\uuu cdecl
\uu stdcall

我不确定是否理解您的问题;C++ C++ CLI C++基本上是具有附加功能的C++,所以你可以用C++调用DLL,就像普通C++代码中调用它一样。我只是换了一个以前从C#打的电话。好吧,我现在明白你的意思了。抱歉,我对C++/CLI完全陌生。谢谢你的评论。这对我来说真的很清楚。非常感谢。我不知道语言可以使用与C++相同的语法,因为我一直在查看我所看到的许多代码中的托管指针。我想我的问题真的很愚蠢。我猜只要我只在非托管端进行分配,并且不将分配的数组封送回来,我就不需要固定指针或任何东西?在这种情况下,我只需从返回到C++ /CLI的指针中创建一个ItPtR,并将其返回到C,以在将来需要将其传递回C++时。谢谢
double* arr_not_allocated;
UINT arrayCount = whatever;
allocate(arr_not_allocated, arrayCount);
/* now both arrayCount and arr_not_allocated have been updated by the function */