我一直在尝试在我的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);
答案 0 :(得分:0)
您可能想要检查BOOL的定义。我怀疑这可能是C中缺少内置bool的其他因素。
尝试将DllImport更改为
可能值得[DllImport(@"ICCardReader.dll")]
public static extern int Init(StringBuilder data);
并检查是否有一些整数值返回。
[编辑] 还可以尝试将输入更改为StringBuilder