本文介绍了如何使用DLLImport从C#传递字符串到C ++(和从C ++到C#)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直试图发送字符串/从C#到/从C ++很长一段时间,但没有设法让它工作...

I've been trying to send a string to/from C# to/from C++ for a long time but didn't manage to get it working yet ...

所以我的问题很简单:

有人知道从C#到C ++和从C ++到C#的一个字符串吗?

(一些示例代码会很有帮助) / p>

So my question is simple :
Does anyone know some way to send a string from C# to C++ and from C++ to C# ?
(Some sample code would be helpful)

推荐答案

将字符串从C#传递到C ++应该是简单的。 PInvoke将为您管理转换。

Passing string from C# to C++ should be straight forward. PInvoke will manage the conversion for you.

从C ++到C#的获取字符串可以使用StringBuilder完成。

Geting string from C++ to C# can be done using a StringBuilder. You need to get the length of the string in order to create a buffer of the correct size.

下面是一个众所周知的Win32 API的两个例子:

Here are two examples of a well known Win32 API:

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
 static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
public static string GetText(IntPtr hWnd)
 {
     // Allocate correct string length first
     int length       = GetWindowTextLength(hWnd);
     StringBuilder sb = new StringBuilder(length + 1);
     GetWindowText(hWnd, sb, sb.Capacity);
     return sb.ToString();
 }


[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
 public static extern bool SetWindowText(IntPtr hwnd, String lpString);
SetWindowText(Process.GetCurrentProcess().MainWindowHandle, "Amazing!");

这篇关于如何使用DLLImport从C#传递字符串到C ++(和从C ++到C#)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-13 22:33