【发布时间】:2010-02-25 17:30:24
【问题描述】:
我需要从 win32 dll 访问功能,因为我在 C# 代码中使用 [dllimport]。
我需要使用 [dllimport] 为以下 c++ 方法创建什么确切的方法签名
void GetGeneratedKey(char *code, int len, char *key)
请帮忙。
谢谢
nRk
【问题讨论】:
标签: c# .net c++ interop com-interop
我需要从 win32 dll 访问功能,因为我在 C# 代码中使用 [dllimport]。
我需要使用 [dllimport] 为以下 c++ 方法创建什么确切的方法签名
void GetGeneratedKey(char *code, int len, char *key)
请帮忙。
谢谢
nRk
【问题讨论】:
标签: c# .net c++ interop com-interop
这在很大程度上取决于本机 C 函数中变量 key 和 code 发生的情况。根据签名,我猜code 正在被读取,key 正在被写入。如果是这种情况,请尝试以下签名
[DllImport("SomeDll")]
public static extern void GetGeneratedKey(
[In] string code,
[In] int length,
StringBuilder key);
【讨论】:
只需使用string。应该可以工作。
【讨论】:
大家的快速回复和支持
我使用了如下方法签名
VC++ 方法签名
void GetGeneratedKey(char *code, int len, char *key)
C# 签名
[DllImport("SomeDll")]
public static extern void GetGeneratedKey(byte[] code, int len, bute key);
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);
【讨论】: