我正在编写一个小 C# 应用程序,它在 C++ API 中调用一些函数。我将 C++ 代码构建到 DLL 中,C# 代码使用 DllImport 调用 API。(我正在为 C++ DLL 使用 .DEF 文件,所以我不需要 extern "C"。)
到目前为止,API 有一个功能,目前完全没有做任何事情:
bool Foo()
{
return false;
}
在 C# 中,我有以下内容:
public class FooAPI
{
[DllImport("Foo.dll")]
public static extern bool Foo();
}
...
bool b = FooAPI.Foo();
if (!b)
{
// Throw an exception
}
我的问题是,出于某种原因, b 总是评估为TRUE。我在 if (!b) 上有一个断点,调试器将其报告为“真”,与 C++ 函数返回的内容无关。
C# bool 是否与 C++ bool 相同?尽管即使不是这种情况,我仍然不明白它如何找到返回值是“真”:)
谁能帮我解决这个奇怪的差异?
提前致谢!