如何在C#中从dll导入访问/编组char *变量

时间:2010-02-25 17:30:25

标签: c# .net c++ interop com-interop


我需要从win32 dll访问功能,因为我在C#代码中使用[dllimport]。


我需要使用[dllimport]为以下c ++方法创建的确切方法签名

void GetGeneratedKey(char *code, int len, char *key)

请帮忙。

由于
NRK

4 个答案:

答案 0 :(得分:3)

这在很大程度上取决于本机C函数中变量keycode的变化。基于签名,我猜测正在读取code并正在写入key。如果是这种情况,请尝试以下签名

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

答案 1 :(得分:1)

只需使用string即可。应该工作。

答案 2 :(得分:0)

每个人都快速回复和支持 我使用了如下所示的方法签名

VC ++方法签名
void GetGeneratedKey(char * code,int len,char * key)

C#签名
[的DllImport( “SomeDll”)]
public static extern void GetGeneratedKey(byte [] code,int len,bute key);


NRK

答案 3 :(得分: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);