VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > c#教程 >
  • C#教程之C#教程之C#调用C++(QT5.5.1项目)的C++/CLI(CLR项目(2)

 

1
2
3
4
5
6
7
8
9
10
String ^ MarshalString(QString os)
{
    using namespace Runtime::InteropServices;
    QByteArray data = os.toUtf8();
    char * str = new char[data.length() + 1];
    strcpy_s(str, data.length() + 1, data.constData());
    String ^ ret = Marshal::PtrToStringAnsi(static_cast<IntPtr>(str));
    delete str;
    return ret;
}

 

3.char * 到 String ^

1
2
3
4
5
String ^ MarshalString(char* os) {
    using namespace Runtime::InteropServices;
    String ^ ret = Marshal::PtrToStringAnsi(static_cast<IntPtr>(os));
    return ret;
}

 

4.wchar_t * 到 String ^

1
2
3
4
5
String ^ MarshalString(wchar_t* os) {
    using namespace Runtime::InteropServices;
    String ^ ret = Marshal::PtrToStringUni((IntPtr)os);
    return ret;
}

 

5.数组的转换

1
2
3
4
5
6
using namespace System::Runtime::InteropServices;
QByteArray byteArray = obj.toByteArray();
int length = byteArray.count();
array<Byte> ^ rbyteArray = gcnew array<Byte>(length + 2);
Marshal::Copy((IntPtr)byteArray.data(), rbyteArray, 0, length);
ret = rbyteArray;
相关教程