我需要從win32 dll訪問功能,因爲我在C#代碼中使用[dllimport]。如何從C#中的dll導入訪問/ marshall char *變量#
我需要什麼確切的方法簽名與函數[DllImport]創建下面的C++方法
void GetGeneratedKey(char *code, int len, char *key)
請幫助在此。
感謝
NRK
我需要從win32 dll訪問功能,因爲我在C#代碼中使用[dllimport]。如何從C#中的dll導入訪問/ marshall char *變量#
我需要什麼確切的方法簽名與函數[DllImport]創建下面的C++方法
void GetGeneratedKey(char *code, int len, char *key)
請幫助在此。
感謝
NRK
這很大程度上取決於原生C函數中變量key
和code
發生了什麼。根據簽名,我猜測正在被讀取,key
正在被寫入。如果是這樣的話,那麼試試下面的簽名
[DllImport("SomeDll")]
public static extern void GetGeneratedKey(
[In] string code,
[In] int length,
StringBuilder key);
只需使用string
。應該工作。
大家快速回復和支持
我用像下面
VC++方法簽名
無效GetGeneratedKey(字符*代碼,詮釋方法簽名LEN,字符*鍵)
C#簽名
[的DllImport( 「SomeDll」)]
公共靜態外部空隙GetGeneratedKey(字節[]碼,LEN INT,弼鍵);
NRK
這裏是我的非託管情況的解決方案。
C++
void GetGeneratedKey(
const char *code,
int length,
char *key);
C#
[DllImport("Some.Dll")]
public static extern void GetGeneratedKey(
[MarshalAs(UnmanagedType.LPStr)]string code,
int length,
[MarshalAs(UnmanagedType.LPStr)]StringBuilder key);