托管 c++ 中的 c# 方法
我正在创建 ac# dll 库来扫描进程内存。 我有静态方法:
int searchASCII(int pid, SByte[] text, int pos)
{
ReadProcessApi RApi = new ReadProcessApi(pid, pos);
return RApi.ASCIIScan(text);
}
并希望使其可在 Visual C++ 托管中使用。 如果我想在 C++ 中调用这样的方法,文本参数应该使用哪种类型: searchASCII((int)pid, (char[])text, (int)position)
?
在当前场景中我收到错误:
"cannot convert parameter from 'char [6]' to 'cli::array<Type,dimension> ^' "
I'm creating a c# dll library to scan process memory.
I have static method:
int searchASCII(int pid, SByte[] text, int pos)
{
ReadProcessApi RApi = new ReadProcessApi(pid, pos);
return RApi.ASCIIScan(text);
}
and want to make it usable in Visual C++ Managed.
Which type should be used for text param, if I want to call method like this in c++:searchASCII((int)pid, (char[])text, (int)position)
?
In current scenario I get error:
"cannot convert parameter from 'char [6]' to 'cli::array<Type,dimension> ^' "
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您想在 C++\CLI 中调用 C# 函数,则需要使用相同的类型。 C# 中的数组实际上是 C++\CLI 中的
cli::array
。您不仅能够将 C++char[]
转换为cli:array
。我会看看 MSDN 上的本机\托管互操作。要从 C++\CLI 调用该函数,您必须创建一个如下所示的数组:
If you want to call a C# function in C++\CLI you will need use the same types. An array in C# is actually a
cli::array<T,d>
in C++\CLI. You will not just be able to cast a C++char[]
to acli:array<T,d>
. I would take a look at the native\managed interop on MSDN.To call the function from C++\CLI you will have to create an array like this: