C++/CLI託管字串與非託管char數組的轉換

來源:互聯網
上載者:User

CLI

 

顯示行號 複製代碼 ? 這是一段程式碼。
  1. // CLR.Dll.h
  2. #pragma once
  3. #include "string.h"
  4. using namespace System;
  5. using namespace System::Runtime::InteropServices;
  6. namespace CLRDll {
  7.     public ref class DllClass
  8.     {
  9.     public:
  10.         String^ FunctionTest(String^ input)
  11.         {
  12.             char* inputChar = ManagedString2UnmanagedStringA(input);
  13.             //call native c++ function...
  14.             inputChar[0] = 'A';
  15.             String^ result = UnmanagedStringA2ManagedString(inputChar);
  16.             return result;
  17.         }
  18.     private:
  19.         //將?非?托D管ü的?ANSI字?符?串?轉a換?成é托D管ü字?符?串? 
  20.         String^ UnmanagedStringA2ManagedString(char* pIn)
  21.         {
  22.             return Marshal::PtrToStringAnsi(static_cast<IntPtr>(pIn));
  23.         }
  24.         //將?托D管ü字?符?串?轉a換?成é非?托D管ü的?ANSI字?符?串? 
  25.         char* ManagedString2UnmanagedStringA(String^ strIn)
  26.         {
  27.             IntPtr ip = Marshal::StringToHGlobalAnsi(strIn);
  28.             const char* pTemp = static_cast<const char*>(ip.ToPointer());
  29.             char *pOut = new char[strlen(pTemp)+1];
  30.             strcpy(pOut, pTemp);
  31.             Marshal::FreeHGlobal(ip);
  32.             return pOut;
  33.         } 
  34.     };
  35. }

 

C#

 

顯示行號 複製代碼 ? 這是一段程式碼。
  1. public void RunTest()
  2. {
  3.     DllClass curDllClass = new DllClass();
  4.     string input = "test";
  5.     string output = curDllClass.FunctionTest(input);
  6. }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.