2010-02-25 27 views

回答

3

這很大程度上取決於原生C函數中變量keycode發生了什麼。根據簽名,我猜測正在被讀取,key正在被寫入。如果是這樣的話,那麼試試下面的簽名

[DllImport("SomeDll")] 
public static extern void GetGeneratedKey(
    [In] string code, 
    [In] int length, 
    StringBuilder key); 
1

只需使用string。應該工作。

0

大家快速回復和支持
我用像下面

VC++方法簽名
無效GetGeneratedKey(字符*代碼,詮釋方法簽名LEN,字符*鍵)

C#簽名
[的DllImport( 「SomeDll」)]
公共靜態外部空隙GetGeneratedKey(字節[]碼,LEN INT,弼鍵);


NRK

0

這裏是我的非託管情況的解決方案。

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);