Ich schreibe eine kleine C# -App, die einige Funktionen in einer C++ API aufruft. Ich habe den C++ Code, der in eine DLL aufbaut, und der C# Code ruft die API auf, die DllImport verwendet. (Ich verwende eine DEF-Datei für die C++ DLL so brauche ich nicht extern "C".)C++ aus C#: C++ - Funktion (in einer DLL), die falsch zurückgibt, aber C# denkt, dass es wahr ist!
Bisher ist die API hat eine Funktion, die derzeit absolut nichts:
bool Foo()
{
return false;
}
In C#, ich habe folgendes:
public class FooAPI
{
[DllImport("Foo.dll")]
public static extern bool Foo();
}
...
bool b = FooAPI.Foo();
if (!b)
{
// Throw an exception
}
Mein Problem ist, dass aus irgendeinem Grund, b immer TRUE auswertet. Ich habe einen Haltepunkt auf wenn (! B) und der Debugger meldet es als "wahr", unabhängig davon, was die C++ Funktion zurückgibt.
Ist das C# bool das gleiche wie das C++ bool? Auch wenn das nicht der Fall war, bekomme ich immer noch nicht, wie es den Rückgabewert als "wahr" empfinden würde :)
Kann mir jemand mit dieser bizarren Diskrepanz helfen?
Vielen Dank im Voraus!
Wenn Sie die C++ Funktion return true, was hat Ihre C# Methode als Rückgabewert sehen? –
Können Sie uns den Code zeigen, wo Sie die FooAPI.Foo() Methode verwenden? – Kevin
Sollte Ihre C++ Funktion nicht extern "C" deklariert sein? –