如何调用 C++ 中定义的函数来自 C# 代码内部的具有 int * 类型参数的 DLL?
我有一个本机常规 C++ Dll,我想从 C# 代码调用它,因此我创建了 C++/CLI 类(如所述 此处和此处),其中将包括托管C++ 代码,可以由任何 C# 代码直接调用,并且可以依次调用本机非托管 C++。
本机 C++ dll 中的函数之一具有 int * 类型的参数。如何在包装函数中声明以及如何将其转换为 int *?
I have a native regular C++ Dll which I want to call from C# code, so i created C++/CLI class (as described here and here) which will include managed C++ code and which can be called by any C# code directly and which can make calls inturn to native unmanaged C++.
One of function in native C++ dll has parameter of type int *. How do I declare in wrapper function and how can i convert it into int *?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它是通过引用传递值的 C/C++ 方式。您应该使用 ref 或 out 关键字:
在 C++/CLI 中,大致如下所示:
It is the C/C++ way of passing a value by reference. You should use the ref or out keyword:
In C++/CLI that would look roughly like this:
IntPtr 是一种大致相当于 void * 的类型。
根据您的评论,您最好这样做(C#):
但由于 AllocHGlobal 可以采用 int,我不知道您为什么不这样做:
IntPtr is a type that is roughly equivalent to void *.
From your comment, you'd be best off doing something like this (C#):
but since AllocHGlobal can take an int, I don't know why you wouldn't do this: