Open
Description
I'm trying to do a call from .Net a native function which call backs to .Net. I'm using function pointers as suggested in discord channel, but I'm getting the following error (maybe related to #43791?):
1:7>Target "_GeneratePInvokeTable: (TargetId:229)" in file "C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets" from project "C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj" (target "_WasmBuildNativeCore" depends on it):
Added Item(s): _WasmPInvokeModules=libWasmNative
Added Item(s): _WasmPInvokeModules=libSystem.Native
Added Item(s): _WasmPInvokeModules=libSystem.IO.Compression.Native
Added Item(s): _WasmPInvokeModules=libSystem.Globalization.Native
Using "PInvokeTableGenerator" task from assembly "C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\..\tasks\net6.0\WasmAppBuilder.dll".
Task "PInvokeTableGenerator" (TaskId:151)
Task Parameter:
Assemblies=
C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\obj\Debug\net6.0\linked\Wasm.Console.Sample.dll
C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\obj\Debug\net6.0\linked\System.Console.dll
C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\obj\Debug\net6.0\linked\System.Private.Runtime.InteropServices.JavaScript.dll
C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\obj\Debug\net6.0\linked\System.Private.Uri.dll
C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\obj\Debug\net6.0\linked\System.Runtime.CompilerServices.Unsafe.dll
C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\obj\Debug\net6.0\linked\System.Runtime.dll
C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\obj\Debug\net6.0\linked\System.Private.CoreLib.dll (TaskId:151)
Task Parameter:OutputPath=C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\obj\Debug\net6.0\wasm\pinvoke-table.h (TaskId:151)
Task Parameter:
Modules=
libWasmNative
libSystem.Native
libSystem.IO.Compression.Native
libSystem.Globalization.Native (TaskId:151)
Generating pinvoke table to 'C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\obj\Debug\net6.0\wasm\pinvoke-table.h'. (TaskId:151)
13:27:49.489 1:7>C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: The "PInvokeTableGenerator" task failed unexpectedly. [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: System.NotSupportedException: Parsing function pointer types in signatures is not supported. [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at System.Reflection.TypeLoading.Ecma.EcmaModule.GetFunctionPointerType(MethodSignature`1 signature) in System.Reflection.MetadataLoadContext.dll:token 0x6000619+0xa [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at System.Reflection.Metadata.Ecma335.SignatureDecoder`2.DecodeType(BlobReader& blobReader, Boolean allowTypeSpecifications, Int32 typeCode) in System.Reflection.Metadata.dll:token 0x6000abf+0x100 [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at System.Reflection.Metadata.Ecma335.SignatureDecoder`2.DecodeMethodSignature(BlobReader& blobReader) in System.Reflection.Metadata.dll:token 0x6000ac1+0x5a [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at System.Reflection.TypeLoading.Ecma.EcmaMethodDecoder.SpecializeMethodSig(IRoMethodBase roMethodBase) in System.Reflection.MetadataLoadContext.dll:token 0x60005e8+0x0 [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at System.Reflection.TypeLoading.RoDefinitionMethod`1.ComputeMethodSig() in System.Reflection.MetadataLoadContext.dll:token 0x6000245+0x7 [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at System.Reflection.TypeLoading.RoMethod.get_MethodSig() in System.Reflection.MetadataLoadContext.dll:token 0x6000278+0xc [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at System.Reflection.TypeLoading.RoMethod.get_ReturnParameter() in System.Reflection.MetadataLoadContext.dll:token 0x6000276+0x0 [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at System.Reflection.TypeLoading.RoMethod.get_ReturnType() in System.Reflection.MetadataLoadContext.dll:token 0x600027d+0x0 [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at PInvokeTableGenerator.GenPInvokeDecl(PInvoke pinvoke) in WasmAppBuilder.dll:token 0x6000020+0xc9 [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at PInvokeTableGenerator.EmitPInvokeTable(StreamWriter w, Dictionary`2 modules, List`1 pinvokes) in WasmAppBuilder.dll:token 0x600001e+0x59 [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at PInvokeTableGenerator.GenPInvokeTable(String[] pinvokeModules, String[] assemblies) in WasmAppBuilder.dll:token 0x600001c+0xaf [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at PInvokeTableGenerator.Execute() in WasmAppBuilder.dll:token 0x600001b+0x75 [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() in Microsoft.Build.dll:token 0x60015fb+0x3e [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
C:\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-rc.1.21371.1\Sdk\WasmApp.Native.targets(209,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask) in Microsoft.Build.dll:token 0x600147a+0x2b5 [C:\Users\jcarnero\source\dotnet-wasm-sample\src\console\Wasm.Console.Sample.csproj]
Done executing task "PInvokeTableGenerator" -- FAILED. (TaskId:151)
This are the most relevants parts of the code:
[DllImport(DllName)]
public static extern unsafe void callCbk(delegate*<void> cbk);
typedef void (*callback)(void);
void callCbk(callback cbk)
{
cbk();
}
And I'm using version
Microsoft.AspNetCore.App 6.0.0-rc.1.21370.12 [C:\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.0-rc.1.21369.14 [C:\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 6.0.0-rc.1.21369.7 [C:\dotnet\shared\Microsoft.WindowsDesktop.App]
Metadata
Metadata
Assignees
Type
Projects
Status
No status