我一直在尝试在我的 C# 应用程序中包含一个 C DLL,用于 windows mobile 6.5,但我无法获得正确的行为。
我一直在尝试使用的功能如下(如头文件中所述):
extern "C" __declspec (dllimport) BOOL Init (wchar_t *data);
其中 data 是输入/输出参数。
我的代码,包括这个功能,是这样的:
[DllImport(@"ICCardReader.dll")]
public static extern int Init([MarshalAs(UnmanagedType.LPWStr)] ref string data);
尽管在运行时调用此函数时编译器会接受这一点,但该函数具有不良行为(结果始终为假)。
所以我的问题,除了明显的“我做错了什么?”之外,是:当涉及指针时,如何在 C# 应用程序中包含 C DLL?
PSI 已经能够通过第三方应用程序验证 DLL 的正确性
[编辑]
感谢用户的建议,我将 Dllimport 更改如下:
public static extern int Init(StringBuilder data);