2016-06-30 19 views
3

Gibt es eine Alternative zu .NET Framework EmitCalli für netcoreapp1.0EmitCalli .net Kern alternative

if (IntPtr.Size == 4) 
    il.Emit(OpCodes.Ldc_I4, ptr.ToInt32()); 
else if (IntPtr.Size == 8) 
    il.Emit(OpCodes.Ldc_I8, ptr.ToInt64()); 

il.EmitCalli(OpCodes.Calli, CallingConvention.Cdecl, returnType, paramTypes); 

Antwort

1

EmitCalli wird in NET-Kern 2.1.0 Preview2 +

4

Enthält diese Bibliothek enthalten, was Sie wollen?

https://www.nuget.org/packages/System.Reflection.Emit.ILGeneration/

Es enthält den System.Reflection.Emit.ILGenerator Typ, einschließlich der Funktion

EmitCalli(OpCode opcode, CallingConventions callingConvention, Type returnType, Type[] parameterTypes, Type[] optionalParameterTypes)

+0

CallingConventions verfügbar sein sind anders, es fehlt Cdecl. – ptp

+0

Es scheint, dass hier möglicherweise eine Feature-Lücke besteht, abhängig davon, wie die native Funktion, die Sie aufrufen möchten, deklariert ist. Ich habe ein Problem in unserem Repository eingereicht, um diese Lücke zu verfolgen: https://github.com/dotnet/corefx/issues/9800 –

+0

In diesem PR behoben - https://github.com/dotnet/coreclr/pull/15040 Es muss noch aus den Verträgen nach https://github.com/dotnet/corefx/issues/9800#issuecomment-344797679 ausgesetzt werden Ich sehe das auch an – Cronan