gpt4 book ai didi

c# - 当涉及指针时,如何在 C# 应用程序中包含 C DLL?

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:00 24 4
gpt4 key购买 nike

我一直在尝试在我的 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.我已经能够通过第三方应用程序验证 DLL 的正确性

[编辑]

感谢用户的建议,我对 Dllimport 进行了如下更改:

public static extern int Init(StringBuilder data);

最佳答案

您可能想检查 BOOL 的定义。我怀疑这可能是其他东西的 typedef,因为 C 中缺少内置 bool。

可能值得尝试将 DllImport 更改为

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

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

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

关于c# - 当涉及指针时,如何在 C# 应用程序中包含 C DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13140374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com