如果涉及指针,如何在C#应用程序中包含C DLL?

时间:2012-10-30 13:45:45

标签: c# .net c pointers dll

我一直在尝试在我的C#应用​​程序中包含一个C DLL,用于Windows Mobile 6.5,但我无法获得正确的行为。

我一直尝试使用的功能如下(如头文件中所述):

extern "C" __declspec (dllimport) BOOL Init (wchar_t *data);

数据是输入/输出参数。

包含此功能的代码是:

[DllImport(@"ICCardReader.dll")]
public static extern int Init([MarshalAs(UnmanagedType.LPWStr)] ref string data);

在运行时调用时,编译器接受此函数,此函数的行为不正确(结果始终为false)。

所以我的问题,除了显而易见的“我做错了什么?”之外,是:如果涉及指针,如何在C#应用程序中包含C DLL?

P.S.I've能够通过第三方应用程序验证DLL的正确性

[编辑]

感谢用户的建议,我已将Dllimport更改为:

public static extern int Init(StringBuilder data);

1 个答案:

答案 0 :(得分:0)

您可能想要检查BOOL的定义。我怀疑这可能是C中缺少内置bool的其他因素。

尝试将DllImport更改为

可能值得
[DllImport(@"ICCardReader.dll")]
public static extern int Init(StringBuilder data);

并检查是否有一些整数值返回。

[编辑] 还可以尝试将输入更改为StringBuilder