我需要从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);