2016-12-30 35 views
2

我正在構建一個c#應用程序,在我的應用程序中,我加載一個C++/cli dll,並調用它的函數。如何初始化sbyte *在c#

我已經在我的C++/cli類中聲明瞭一個值類。

public value class S_OpenParam { 
     public : 
      int iPort; 
      char* szIpAddress; 
      int iBaudRate; 
}; 

然後,我想在我的c#應用程序中初始化我的S_OpenParam。

我在初始化的char * szIpAddress

myObj.S_OpenParam sParam; 
sParam.iBaudRate = 0; 
sParam.iPort = 0; 

當我嘗試將值分配給它面臨的問題:

sParam.szIpAddress = "127.0.0.1"; 

它顯示了類型爲sbyte *

enter image description here

你知道如何初始化它嗎?

+0

什麼是c#中的szIpAddress的acutal類型?我的意思是,它期待什麼? – nozzleman

+0

只是不這樣做! C#是一種完全現代化的語言,它不會讓你用這些古老的8位編碼來吊死你自己。任何聲明爲'public'的東西都必須使用'String ^'而不是'char *'。如果有必要,它取決於您的C++/CLI代碼將該System :: String轉換爲傳統編碼。不需要這麼做也很容易,編碼一個8位字符串的IP地址是25年前你不得不做的。我們今天進入了21世紀。 –

回答

1

既然你是在一個C++/CLI DLL中,爲什麼不使用String ^而不是char *,這樣你就可以從c#更新它而沒有問題?

public value class S_OpenParam { 
     public : 
      int iPort; 
      String^ szIpAddress; <-- String^ instead of char* 
      int iBaudRate; 
};