diff --git a/src/Generator/Generators/CSharp/CSharpTypePrinter.cs b/src/Generator/Generators/CSharp/CSharpTypePrinter.cs index 3fb2d838..a222a94e 100644 --- a/src/Generator/Generators/CSharp/CSharpTypePrinter.cs +++ b/src/Generator/Generators/CSharp/CSharpTypePrinter.cs @@ -120,6 +120,9 @@ namespace CppSharp.Generators.CSharp if (arguments.Count > 0) args = VisitParameters(function.Parameters, hasNames: false).Type; + if (ContextKind != CSharpTypePrinterContextKind.Managed) + return "global::System.IntPtr"; + if (returnType.Type.IsPrimitiveType(PrimitiveType.Void)) { if (!string.IsNullOrEmpty(args)) diff --git a/tests/Basic/Basic.cpp b/tests/Basic/Basic.cpp index 7f6242f5..a45acbed 100644 --- a/tests/Basic/Basic.cpp +++ b/tests/Basic/Basic.cpp @@ -71,7 +71,7 @@ int Hello::RetEnum(Enum e) return (int)e; } -int unsafeFunction(const Bar& ret, char* testForString) +int unsafeFunction(const Bar& ret, char* testForString, void (*foo)(int)) { return ret.A; } diff --git a/tests/Basic/Basic.h b/tests/Basic/Basic.h index 11334939..4dc74cf5 100644 --- a/tests/Basic/Basic.h +++ b/tests/Basic/Basic.h @@ -73,4 +73,4 @@ public: DLL_API Bar operator+(const Bar &, const Bar &); -int DLL_API unsafeFunction(const Bar& ret, char* testForString); +int DLL_API unsafeFunction(const Bar& ret, char* testForString, void (*foo)(int));