2010-02-25 31 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);