c# - 从 C++ 到 C# 的 bool 指针

标签 c# c++ boolean dllimport

我想在我的 C# 应用程序中使用 DLLImport 使用 C++ DLL 中的函数:

BOOL IsEmpty( DWORD KeyID, BOOL *pFlag )

我尝试了很多组合但都是徒劳的,例如:

public extern static bool IsEmpty(int KeyID, ref bool pFlag);

该方法返回 false(这意味着错误)。

知道怎么做吗?

最佳答案

收件人quote "Willy" (有修正案):

Beware the booleans!

Win32 defines different versions of booleans.

1) BOOL used by most Win32 API's, is an unsigned int a signed int (4 bytes)

2) BOOLEAN is a single byte, only used by a few win32 API's!!

3) and C/C++ has it's builtin 'bool' which is a single byte

...并添加@tenfour 指出的内容:

4) the even more bizarre VARIANT_BOOL

typedef short VARIANT_BOOL;
#define VARIANT_TRUE ((VARIANT_BOOL)-1)
#define VARIANT_FALSE ((VARIANT_BOOL)0)

对于 BOOL,有符号或无符号的性质应该无关紧要,因为唯一的“假”模式是 0。因此请尝试将其视为 4 字节的数量...但是您与 DWORD 接口(interface) may be satisfactory ,(我没有处理 Windows 64 位约定。)

关于c# - 从 C++ 到 C# 的 bool 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12711324/

相关文章:

c++ - 在这种情况下重载 bool 运算符是否危险

c# - 当后台任务同时运行时在前台触发事件?

c# - 为什么 C# Null 条件运算符不返回 Nullable<T>?

C++ 'vector' 未在此范围内声明

swift - 在评估 'array' 中声明的条件后定义的 boolean 值

Java boolean 原语

c# - 我可以在 VSIX 中检测到使用 Visual Studio Workspace 保存(未更改)的文档吗?

c# - Json.NET 问题

c++ - 从模板参数的模板参数中提取值

c++ - 有没有办法告诉 C++ 中指针实际指向什么类型