托管 c++ 中的 c# 方法

发布于 2024-10-20 08:07:46 字数 503 浏览 6 评论 0原文

我正在创建 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

记忆之渊 2024-10-27 08:07:46

如果您想在 C++\CLI 中调用 C# 函数,则需要使用相同的类型。 C# 中的数组实际上是 C++\CLI 中的 cli::array。您不仅能够将 C++ char[] 转换为 cli:array。我会看看 MSDN 上的本机\托管互操作

要从 C++\CLI 调用该函数,您必须创建一个如下所示的数组:

cli::array<System::SByte> ^text = gcnew cli::array<System::SByte>(/* some_size */);

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 a cli: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:

cli::array<System::SByte> ^text = gcnew cli::array<System::SByte>(/* some_size */);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文