AaronRobinsonMSFT / DNNE

Prototype native exports for a .NET Assembly.
MIT License
404 stars 41 forks source link

[Question/Clarification] How does one use the output correctly? #143

Closed ThaDaVos closed 1 year ago

ThaDaVos commented 1 year ago

I first tried with my own project and switched to the sample from this repo as I kept getting the following error:

Could not load file or assembly file:///....\DNNE\sample\obj\Debug\net6.0\dnne\bin\SampleNE
.dll or any of its dependencies. It is expected that the module would contain an assembly manifest.

(Above error is from the sample project)

Is there any example on in what way the files should be placed, how they should be loaded, for example with Add-Type in powershell (Above error is from Add-Type as I tried loading it through there first), as I couldn't find a clear answer in the docs and issues about this.

Just to clarify - I added the following to the sample project to get it into x86 output as that's what I need for my own project, I also used Powershell (x86) with Add-Type to try and load it.

Changed Sample.csproj:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>net6.0-windows</TargetFramework>
        <EnableDynamicLoading>true</EnableDynamicLoading>
        <PlatformTarget>x86</PlatformTarget>
        <RuntimeIdentifier>win-x86</RuntimeIdentifier>
        <!-- EXPERIMENTAL: The native hosting should assume it is in a self-contained scenario. 
         When setting this flag to true, the only change in output will be the generated hosting 
         layer will call an API that will permit self-contained runtime activation. In order for this 
         option to work as desired the user must have manually configured the assembly's runtimeconfig.json 
         file and deps.json file. The user must also copy the appropriate runtime binaries to create a 
         valid self-contained install environment. -->
        <DnneSelfContained_Experimental>false</DnneSelfContained_Experimental>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="DNNE" Version="1.0.33" />
    </ItemGroup>

</Project>
ThaDaVos commented 1 year ago

My own project is now sort of loadable, but throws this: afbeelding

Het systeem kan het opgegeven bestand niet vinden is Dutch for The system cannot find the specified file

I ran this with:

try { Add-Type -Path .\MyDll.dll } Catch { $_.Exception.LoaderExceptions }

If I run the following with the NE one:

try { Add-Type -Path .\MyDllNE.dll } Catch { $_.Exception }

I get: afbeelding

ThaDaVos commented 1 year ago

Apparently even though Powershell doesn't accept it, the Clarion project I have to integrate it into doesn't crash without an error as it did before after calling the method/library now - sadly it throws this now:

Exception occurred at address 0019FE69
Exception code C0000005: Access Violation
Process PID=24088  Image: ...\CashDrawerTester.exe
Thread 1  Handle=00000258  TID=17072

Exception parameters:
00000000
FFFFFFFF

EAX=CC004016    EBX=004016B8    ECX=00873290    EDX=07ABD94B
ESI=00000000    EDI=007A5264    EBP=0019FD70    ESP=0019E372
EIP=0019FE69    FLG=00010246

Call Stack:
0019FE69
0019FD98

Clarion modules:
01000000  08.00:9759  ...\ClaRUN.dll
00400000  08.00:9759  ...\CashDrawerTester.exe

Thread stack:
0019E370: 5D 0F 00 06  00 00 00 00  00 00 00 00  00 00 00 00 
0019E380: 7C CE 19 00  FF FF FF FF  E4 E3 19 00  7C CE 19 00 
0019E390: B4 0D 8F 07  10 40 FF 00  5E 0F 00 06  00 00 00 00 
0019E3A0: 00 00 00 00  00 00 00 00  7C CE 19 00  FF FF FF FF 
0019E3B0: 78 84 D3 07  7C CE 19 00  C0 0D 8F 07  10 40 FF 00 
0019E3C0: 5F 0F 00 06  00 00 00 00  00 00 00 00  00 00 00 00 
0019E3D0: 7C CE 19 00  FF FF FF FF  18 F4 19 00  7C CE 19 00 
0019E3E0: CC 0D 8F 07  10 40 FF 00  60 0F 00 06  00 00 00 00 
0019E3F0: 00 00 00 00  00 00 00 00  7C CE 19 00  FF FF FF FF 
0019E400: 78 84 D3 07  7C CE 19 00  D8 0D 8F 07  10 40 FF 00 
0019E410: 61 0F 00 06  00 00 00 00  00 00 00 00  00 00 00 00 
0019E420: 7C CE 19 00  FF FF FF FF  18 F4 19 00  7C CE 19 00 
0019E430: E4 0D 8F 07  10 40 FF 00  62 0F 00 06  00 00 00 00 
0019E440: 00 00 00 00  00 00 00 00  7C CE 19 00  FF FF FF FF 
0019E450: 90 D0 E4 65  7C CE 19 00  F0 0D 8F 07  10 40 FF 00 
0019E460: 63 0F 00 06  00 00 00 00  00 00 00 00  00 00 00 00 
0019E470: 7C CE 19 00  FF FF FF FF  70 E5 19 00  7C CE 19 00 
0019E480: FC 0D 8F 07  10 40 FF 00  64 0F 00 06  00 00 00 00 
0019E490: 00 00 00 00  00 00 00 00  7C CE 19 00  FF FF FF FF 
0019E4A0: B0 E7 D3 07  7C CE 19 00  08 0E 8F 07  10 40 FF 00 
0019E4B0: 65 0F 00 06  00 00 00 00  00 00 00 00  00 00 00 00 
0019E4C0: E4 E4 19 00  CB E1 8B 77  01 00 00 00  23 96 88 77 
0019E4D0: C8 E5 19 00  74 17 1A 00  1E 97 88 77  C8 E5 19 00 
0019E4E0: FC 00 1A 00  3C E5 19 00  A0 07 00 00  24 E5 19 00 
0019E4F0: CC 1E 1A 00  00 00 00 00  10 00 00 00  D4 57 68 F4 
0019E500: 01 00 00 00  74 1E 1A 00  1C E6 19 00  01 00 00 00 
0019E510: 68 E5 19 01  FF FF FF FF  24 53 D3 07  7C CE 19 00 
0019E520: 09 00 00 00  02 00 00 00  68 0F 00 06  0A 5B 9B A9 
0019E530: 9C E5 19 00  7A 91 88 77  1C E6 19 00  C8 E5 19 00 
0019E540: 74 E5 19 00  70 E5 19 00  68 E5 19 00  64 E5 19 00 
0019E550: 00 00 00 00  88 E6 19 00  F4 E6 19 00  00 00 00 00 
0019E560: 00 00 00 00  A0 07 00 00  74 17 1A 00  00 D0 24 00 
0019E570: D4 57 68 F4  01 00 00 00  00 00 00 00  00 A0 24 00 
0019E580: 18 00 00 00  03 00 00 00  00 00 00 00  02 00 00 00 
0019E590: 03 00 00 00  02 00 00 00  50 0E 8F 07  64 E6 19 00 
0019E5A0: A5 8C 88 77  03 00 00 00  00 00 00 00  02 00 00 00 
0019E5B0: 1C E6 19 00  C8 E5 19 00  10 E8 19 00  00 00 00 00 
0019E5C0: 03 8D 88 77  3C BA D3 07  40 00 00 00  00 00 00 00 
0019E5D0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E5E0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E5F0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E600: 00 00 00 00  00 00 00 00  90 E6 19 00  00 00 00 00 
0019E610: 09 00 00 00  09 00 00 00  54 F1 1C 66  12 00 14 00 
0019E620: 44 F1 1C 66  00 00 F0 3F  00 00 00 00  CC E6 19 00 
0019E630: 07 E6 D3 07  00 00 00 00  00 00 00 00  E1 54 8F 00 
0019E640: 00 00 02 00  58 E6 19 00  58 E6 19 00  58 E6 19 00 
0019E650: 02 00 00 00  02 00 00 00  00 00 00 00  5E 58 9B A9 
0019E660: CC E7 19 00  10 E8 19 00  FE 89 88 77  F4 E6 19 00 
0019E670: 00 00 00 00  2C 00 00 00  C8 E8 19 00  00 00 00 00 
0019E680: 70 8A 88 77  00 00 00 00  12 00 14 00  44 F1 1C 66 
0019E690: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E6A0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E6B0: 00 00 00 00  48 ED 2E 34  00 E7 19 00  96 36 DC 65 
0019E6C0: 74 BA D3 07  00 00 00 00  24 53 D3 07  00 00 00 00 
0019E6D0: 00 00 80 00  40 E7 19 00  00 00 20 00  20 E7 19 00 
0019E6E0: 20 E7 19 00  20 E7 19 00  20 00 00 00  20 00 00 00 
0019E6F0: 08 6B D2 07  00 00 00 00  00 00 00 00  00 00 00 00 
0019E700: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E710: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E720: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E730: 00 00 00 00  00 00 F0 3F  00 00 00 00  43 00 00 00 
0019E740: 07 00 00 00  00 00 00 00  F0 35 EE 65  60 E9 19 00 
0019E750: A9 BF EB 65  00 00 00 00  22 C0 EB 65  CD 03 73 87 
0019E760: 28 EA 19 00  AD D1 EB 65  08 21 EE 07  70 A2 EC 07 
0019E770: 40 C7 19 00  D4 ED 19 00  40 E2 26 66  9C C9 19 00 
0019E780: 84 C9 19 00  64 C9 19 00  54 C9 19 00  44 C9 19 00 
0019E790: 2F 3D 8D 77  4C 13 97 77  D4 57 68 F4  A2 5A 88 77 
0019E7A0: C8 E8 19 00  00 00 00 00  A0 09 97 77  F0 20 79 00 
0019E7B0: 70 D9 6A 77  E2 E8 19 00  F4 E7 19 00  1F BB 88 77 
0019E7C0: C8 E8 19 00  1C 21 79 00  01 00 00 00  C8 E8 19 00 
0019E7D0: D4 57 68 F4  00 00 00 00  F0 20 79 00  C8 E8 19 00 
0019E7E0: 00 00 00 00  E2 3C 8D 77  00 00 00 00  4F 58 88 77 
0019E7F0: C8 E8 19 00  00 00 00 00  00 00 00 00  2C E8 19 00 
0019E800: 0A 56 9B A9  F0 20 79 00  00 00 00 00  01 00 00 00 
0019E810: 3F E8 8C 77  F0 20 79 00  00 00 00 00  F0 20 79 00 
0019E820: E4 EA 19 00  F8 17 89 77  74 78 84 77  99 06 00 00 
0019E830: A8 79 84 77  04 00 00 00  D4 78 84 77  00 00 00 00 
0019E840: 00 00 00 00  00 00 00 00  0E 18 89 77  E3 07 00 02 
0019E850: F0 20 79 00  00 00 00 01  09 00 00 00  20 00 00 00 
0019E860: 64 0A 27 66  00 00 00 00  00 00 00 00  24 EB 19 00 
0019E870: 02 00 00 00  C8 00 00 00  00 00 00 00  00 00 00 00 
0019E880: 00 00 00 00  00 00 00 00  44 F1 1C 66  00 00 00 00 
0019E890: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E8A0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E8B0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E8C0: 00 00 00 00  00 00 00 00  00 00 00 01  D0 E8 19 00 
0019E8D0: 00 00 74 00  64 00 6C 00  6C 00 2E 00  64 00 6C 00 
0019E8E0: 6C 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E8F0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019E900: 00 00 00 00  B8 B6 8F 07  80 C1 84 00  00 00 00 00 
0019E910: 6C 00 00 00  74 E9 19 00  21 52 EB 65  C8 32 87 00 
0019E920: 6C 00 00 00  48 52 EB 65  D9 03 73 87  60 00 00 00 
0019E930: 04 00 00 00  80 EB 19 00  2A 00 0B 00  E8 6B 81 00 
0019E940: 00 00 00 00  0B 00 00 00  00 00 00 00  30 E4 D1 07 
0019E950: 60 55 EB 65  00 00 00 00  B8 B6 8F 07  08 4C 01 00 
0019E960: 60 00 00 00  6C 00 00 00  DC E9 19 00  F5 5E FC 65 
0019E970: FF FF FF FF  90 E9 19 00  56 8E F1 65  00 00 00 00 
0019E980: 80 EB 19 00  DC DD 01 10  13 8E F5 65  E4 DD 01 10 
0019E990: A8 DD 01 10  28 00 00 00  10 00 00 00  2C 00 00 00 
0019E9A0: 4E 8D F5 65  0C DE 01 10  58 45 81 00  6C 8D F5 65 
0019E9B0: 45 03 73 87  A0 DD 01 10  C8 EA 19 00  00 00 00 00 
0019E9C0: 18 6C F2 65  49 03 73 87  00 00 00 00  C8 EA 19 00 
0019E9D0: 00 00 00 00  0C EA 19 00  5D 03 73 87  9C 11 FE 00 
0019E9E0: C8 EA 19 00  B4 EB 19 00  43 8E FC 65  FF FF FF FF 
0019E9F0: C8 EA 19 00  28 8B F5 65  6D 01 73 87  88 4E E0 07 
0019EA00: 90 32 87 00  C0 EC 19 00  00 00 00 00  00 00 00 00 
0019EA10: 80 EB 19 00  05 00 00 00  90 32 87 00  00 00 00 00 
0019EA20: 58 34 85 00  00 00 79 00  90 32 87 00  4C EA 19 00 
0019EA30: 36 EE 88 77  00 00 00 00  00 00 00 00  00 00 00 00 
0019EA40: 00 00 00 00  E8 F9 CE 07  04 00 00 00  70 EA 19 00 
0019EA50: DE EB EF 65  00 00 79 00  00 00 00 00  E8 F9 CE 07 
0019EA60: DD 00 73 87  98 EA 19 00  2B 78 FC 65  18 6C F2 65 
0019EA70: 3D 00 73 87  01 00 00 00  74 C2 01 10  00 00 00 00 
0019EA80: B4 EA 19 00  42 6F E4 07  C0 EC 19 00  F0 D4 F2 65 
0019EA90: 80 E5 F2 65  A4 EA 19 00  F0 D4 F2 65  48 C9 81 00 
0019EAA0: B8 EC 19 00  21 04 89 11  00 00 00 0F  00 00 00 FF 
0019EAB0: FF FF FF 00  00 00 00 00  00 00 00 00  3C EB 19 00 
0019EAC0: 40 94 F5 65  00 80 00 00  00 00 00 00  A8 5A 26 66 
0019EAD0: 00 00 00 00  50 D0 1D 66  00 00 00 00  00 00 00 00 
0019EAE0: 49 94 F5 65  91 01 73 87  48 FD 19 00  38 FC 19 00 
0019EAF0: CC 33 87 00  00 00 00 00  1C EB 19 00  24 EB 19 00 
0019EB00: 28 EB 19 00  3E F8 69 76  00 00 00 00  00 00 00 00 
0019EB10: 1C EB 19 00  24 EB 19 00  44 FC 19 00  7D 25 F4 65 
0019EB20: 50 D8 AB 07  88 4E E0 07  A5 1B F4 65  E4 EA 19 00 
0019EB30: 38 FC 19 00  C1 5A FD 65  FF FF FF FF  46 92 F5 65 
0019EB40: 6C EB 19 00  B8 EC 19 00  AD D8 AB 07  88 4E E0 07 
0019EB50: D9 01 73 87  88 4E E0 07  00 00 00 00  50 D8 AB 07 
0019EB60: 2C FD 19 00  B8 EC 19 00  FF FF FF FF  74 C2 01 10 
0019EB70: 68 FD 19 00  EC 00 00 00  88 4E E0 07  00 00 00 00 
0019EB80: 64 52 7A 00  38 FD 19 00  38 FC 19 00  3C D9 AB 07 
0019EB90: 39 01 73 87  88 EC 19 00  31 83 F5 65  08 EC 19 00 
0019EBA0: 00 00 00 00  90 32 87 00  01 00 00 00  25 06 73 87 
0019EBB0: 90 7F F5 65  D8 60 80 00  D4 F2 19 00  00 00 00 FF 
0019EBC0: FF FF FF 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019EBD0: 02 00 00 00  10 6F E4 07  04 00 00 00  5D 00 00 00 
0019EBE0: 01 00 00 00  FF FF FF FF  00 00 00 00  00 00 00 00 
0019EBF0: 00 00 00 00  AD D8 AB 07  02 00 00 00  90 32 87 00 
0019EC00: B8 EC 19 00  01 00 00 00  00 00 00 00  27 00 00 00 
0019EC10: E3 00 00 00  EC 00 00 00  FD 00 00 00  19 00 00 01 
0019EC20: 50 D8 AB 07  5D 00 00 00  38 FD 19 00  88 EC 19 00 
0019EC30: D8 60 80 00  01 00 00 00  78 EF 19 00  D4 F2 19 00 
0019EC40: FC FC 19 00  00 00 00 00  48 C9 81 00  CC 33 87 00 
0019EC50: 00 00 00 01  D8 60 80 00  00 00 00 00  00 00 00 00 
0019EC60: 00 00 00 00  B8 EC 19 00  FC FC 19 00  C8 FC 19 00 
0019EC70: 02 00 00 00  00 00 00 00  25 06 73 87  3C F3 19 00 
0019EC80: D2 56 FD 65  FF FF FF FF  4C EF 19 00  D0 E3 F2 65 
0019EC90: B8 EC 19 00  D4 F2 19 00  90 7F F5 65  90 32 87 00 
0019ECA0: 70 83 F5 65  D4 F2 19 00  90 32 87 00  D8 60 80 00 
0019ECB0: 90 7F F5 65  00 00 00 00  01 00 00 00  0C 00 00 00 
0019ECC0: 04 01 00 00  00 00 00 00  40 00 00 00  3C 00 00 00 
0019ECD0: 00 00 00 00  21 00 00 00  04 00 00 00  01 01 01 00 
0019ECE0: 00 00 01 00  00 00 00 00  00 00 01 00  20 00 00 00 
0019ECF0: 00 00 00 00  07 00 00 00  00 00 00 00  07 00 00 00 
0019ED00: 00 00 00 00  00 00 00 00  00 00 00 00  00 01 00 00 
0019ED10: 00 00 00 00  FF FF FF FF  FF FF FF FF  FF FF FF FF 
0019ED20: FF FF FF FF  6C ED 19 00  88 ED 19 00  01 00 00 00 
0019ED30: 4C A4 EC 07  04 00 00 00  94 E2 26 66  00 00 00 00 
0019ED40: 00 00 00 00  0C F6 19 00  84 F1 19 00  BB 6F FC 65 
0019ED50: FF FF FF FF  BD EF EC 65  F0 A1 F1 65  44 A2 F1 65 
0019ED60: 4F A4 EC 07  08 00 00 00  01 00 00 00  03 00 00 00 
0019ED70: 88 ED 19 00  6B 00 6A 76  0C 00 00 00  19 0B 8A 77 
0019ED80: 50 00 6A 76  EC 76 26 66  98 ED 19 00  3B C7 FA 65 
0019ED90: 0C 00 00 00  BA 53 9B A9  E8 ED 19 00  3D B5 FA 65 
0019EDA0: 00 00 00 00  E8 ED 19 00  4A C2 FA 65  A0 FC 19 00 
0019EDB0: D0 E6 21 66  FF FF FF FF  45 07 73 87  22 05 93 19 
0019EDC0: 00 00 00 00  FF FF FF 1F  FF FF FF FF  FF FF FF FF 
0019EDD0: B8 ED 19 00  6B 00 6A 76  74 EE 19 00  B0 A8 FA 65 
0019EDE0: 1D 59 48 E1  FE FF FF FF  00 EE 19 00  8D C1 FA 65 
0019EDF0: A0 FC 19 00  DC EE 19 00  D0 E6 21 66  FF FF FF FF 
0019EE00: 20 EE 19 00  C6 BD FA 65  A0 FC 19 00  DC EE 19 00 
0019EE10: D0 E6 21 66  00 00 00 00  00 00 00 00  00 00 00 00 
0019EE20: 5C EE 19 00  D8 93 FA 65  50 F6 19 00  A0 FC 19 00 
0019EE30: 80 EF 19 00  DC EE 19 00  D0 E6 21 66  00 00 00 00 
0019EE40: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019EE50: 00 00 00 00  01 00 00 00  D0 E6 21 66  80 EE 19 00 
0019EE60: 22 BB 8D 77  50 F6 19 00  A0 FC 19 00  80 EF 19 00 
0019EE70: DC EE 19 00  A0 FC 19 00  70 BB 8D 77  A0 FC 19 00 
0019EE80: 5C F2 19 00  F4 BA 8D 77  50 F6 19 00  A0 FC 19 00 
0019EE90: 80 EF 19 00  DC EE 19 00  6F 51 FD 65  50 F6 19 00 
0019EEA0: 48 FD 19 00  A0 FC 19 00  E2 77 8A 77  50 F6 19 00 
0019EEB0: 5C 86 8B 77  1B 78 8A 77  80 EF 19 00  01 00 00 00 
0019EEC0: 00 00 00 00  00 00 00 00  FF FF FF FF  88 4E E0 07 
0019EED0: 78 EF 19 00  AD D8 AB 07  50 1A CF 07  40 D8 AB 07 
0019EEE0: 88 4E E0 07  48 C9 81 00  5D 00 00 00  90 32 87 00 
0019EEF0: 00 00 00 00  90 32 87 00  00 00 00 00  03 00 00 00 
0019EF00: 30 FC 19 00  30 FC 19 00  01 00 00 00  90 32 87 00 
0019EF10: 00 00 00 00  04 00 00 00  08 00 00 00  01 00 00 00 
0019EF20: AD D8 AB 07  50 1A CF 07  40 D8 AB 07  88 4E E0 07 
0019EF30: 48 C9 81 00  5D 00 00 00  00 00 00 00  00 00 00 00 
0019EF40: 00 00 00 00  0D 06 73 87  08 00 00 00  80 F2 19 00 
0019EF50: 67 D1 F2 65  78 EF 19 00  90 7F F5 65  D4 F2 19 00 
0019EF60: 04 00 00 00  00 00 00 00  50 F6 19 00  90 32 87 00 
0019EF70: 90 32 87 00  00 00 00 00  00 00 00 00  FC FC 19 00 
0019EF80: AD D8 AB 07  A8 EF 19 00  F0 FC 19 00  EC FC 19 00 
0019EF90: E8 FC 19 00  50 F0 19 00  54 F0 19 00  58 F0 19 00 
0019EFA0: F4 FC 19 00  F8 FC 19 00  00 00 00 00  00 00 00 00 
0019EFB0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019EFC0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019EFD0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019EFE0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019EFF0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F000: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F010: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F020: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F030: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F040: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F050: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F060: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F070: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F080: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F090: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F0A0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F0B0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F0C0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F0D0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F0E0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F0F0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F100: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F110: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F120: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F130: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F140: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F150: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F160: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F170: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F180: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F190: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F1A0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F1B0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F1C0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F1D0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F1E0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F1F0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F200: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F210: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F220: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F230: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F240: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F250: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F260: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F270: 00 00 00 00  01 00 00 00  50 F6 19 00  D9 05 73 87 
0019F280: A8 F2 19 00  AC 70 F5 65  90 7F F5 65  D4 F2 19 00 
0019F290: 04 00 00 00  00 00 00 00  50 F6 19 00  90 32 87 00 
0019F2A0: 01 00 00 00  D4 F2 19 00  08 F5 19 00  3C 70 F5 65 
0019F2B0: A5 1F 73 87  48 FD 19 00  01 00 00 00  A0 F6 19 00 
0019F2C0: 00 00 00 00  30 F3 19 00  01 00 00 00  90 32 87 00 
0019F2D0: 00 00 00 00  88 4E E0 07  01 00 00 00  01 00 00 00 
0019F2E0: 01 00 00 00  01 00 00 00  00 00 00 00  FC FC 19 00 
0019F2F0: FF FF FF FF  00 00 00 00  00 00 00 00  00 00 00 00 
0019F300: 00 00 00 00  50 F6 19 00  A0 F6 19 00  05 00 00 00 
0019F310: 7C F4 19 00  01 00 00 00  00 00 00 00  52 43 43 E0 
0019F320: 01 00 00 00  A0 F6 19 00  D8 60 80 00  00 00 00 00 
0019F330: 74 C2 01 10  90 32 87 00  50 F6 19 00  48 FD 19 00 
0019F340: F0 73 13 66  FF FF FF FF  00 00 00 00  00 00 00 00 
0019F350: CC CC CC CC  00 00 00 00  00 00 00 00  00 00 00 00 
0019F360: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F370: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F380: 04 00 00 00  00 00 00 00  48 F3 19 00  00 00 00 00 
0019F390: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F3A0: 00 00 00 00  00 00 00 00  00 00 00 00  FF FF FF FF 
0019F3B0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F3C0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F3D0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F3E0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F3F0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F400: D0 E6 21 66  FC F4 19 00  F0 73 13 66  FF FF FF FF 
0019F410: 00 00 00 00  00 00 00 00  CC CC CC CC  00 00 00 00 
0019F420: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F430: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F440: 00 00 00 00  00 00 00 00  0C 00 00 00  00 00 00 00 
0019F450: 10 F4 19 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F460: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F470: 00 00 00 00  FF FF FF FF  00 00 00 00  00 00 00 00 
0019F480: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F490: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F4A0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F4B0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F4C0: 00 00 00 00  00 00 00 00  90 32 87 00  23 5D F5 65 
0019F4D0: 5D 1E 73 87  90 32 87 00  40 F5 19 00  50 F6 19 00 
0019F4E0: 50 77 13 66  0C F5 19 00  43 52 FD 65  FF FF FF FF 
0019F4F0: 23 5D F5 65  82 5C F5 65  A5 1F 73 87  64 F5 19 00 
0019F500: D1 52 FD 65  FF FF FF FF  4C F5 19 00  33 79 13 66 
0019F510: A0 F6 19 00  90 32 87 00  00 00 00 00  90 32 87 00 
0019F520: 00 00 00 00  00 00 00 00  00 00 00 00  90 32 87 00 
0019F530: D8 60 80 00  52 43 43 E0  00 00 00 00  00 00 00 00 
0019F540: 50 F6 19 00  A0 F6 19 00  D0 E6 21 66  70 F5 19 00 
0019F550: 22 BB 8D 77  50 F6 19 00  48 FD 19 00  A0 F6 19 00 
0019F560: DC F5 19 00  04 FC 19 00  40 BB 8D 77  48 FD 19 00 
0019F570: 38 F6 19 00  F4 BA 8D 77  50 F6 19 00  48 FD 19 00 
0019F580: A0 F6 19 00  DC F5 19 00  50 77 13 66  A0 F6 19 00 
0019F590: 50 F6 19 00  00 00 00 00  88 79 8A 77  50 F6 19 00 
0019F5A0: 48 FD 19 00  A0 F6 19 00  DC F5 19 00  50 77 13 66 
0019F5B0: E0 FB 19 00  52 43 43 E0  50 F6 19 00  62 87 EC 65 
0019F5C0: 4F 00 00 00  48 FD 19 00  32 00 00 00  00 00 00 00 
0019F5D0: 00 60 19 00  00 00 1A 00  00 00 00 00  00 00 ED 07 
0019F5E0: 58 33 79 00  5F 00 00 00  98 EC 8F 07  FF 07 00 00 
0019F5F0: C0 00 79 00  50 33 79 00  00 00 00 00  88 02 00 00 
0019F600: 00 00 00 00  44 F6 19 00  B5 00 00 00  7C 00 00 00 
0019F610: 00 00 00 00  04 F7 35 01  05 08 00 02  0A 00 00 00 
0019F620: 00 00 00 00  00 00 00 00  DC A3 EC 07  01 00 79 00 
0019F630: 01 00 00 00  86 4B 9B A9  70 FB 19 00  86 A8 8B 77 
0019F640: 50 F6 19 00  A0 F6 19 00  50 F6 19 00  A0 F6 19 00 
0019F650: 52 43 43 E0  01 00 00 00  00 00 00 00  74 B1 6B 76 
0019F660: 05 00 00 00  02 15 13 80  00 00 00 00  00 00 00 00 
0019F670: 00 00 00 00  00 00 EA 65  90 32 87 00  34 FC 19 00 
0019F680: 01 00 00 00  69 11 73 87  D4 04 AA 07  90 32 87 00 
0019F690: 68 FD 19 00  D8 60 80 00  DC FB 19 00  38 FB 19 00 
0019F6A0: 7F 00 01 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F6B0: 00 00 00 00  00 00 00 00  00 00 00 00  7F 03 00 00 
0019F6C0: 00 00 00 00  FF FF 00 00  00 00 00 00  00 00 00 00 
0019F6D0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F6E0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F6F0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F700: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F710: 00 00 00 00  00 00 00 00  00 00 00 FE  05 40 00 00 
0019F720: 00 00 00 00  00 82 05 40  00 00 00 00  2B 00 00 00 
0019F730: 53 00 00 00  2B 00 00 00  2B 00 00 00  E0 FB 19 00 
0019F740: 52 43 43 E0  05 00 00 00  00 00 00 00  05 00 00 00 
0019F750: 18 FB 19 00  70 FB 19 00  74 B1 6B 76  23 00 00 00 
0019F760: 16 02 00 00  18 FB 19 00  2B 00 00 00  7F 03 00 00 
0019F770: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F780: 00 00 00 00  A0 1F 00 00  FF FF 00 00  00 00 00 00 
0019F790: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F7A0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F7B0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F7C0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F7D0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F7E0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F7F0: 00 00 00 FE  05 40 00 00  00 00 00 00  00 00 00 00 
0019F800: 00 00 00 82  05 40 00 00  00 00 00 00  00 00 00 00 
0019F810: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F820: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F830: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F840: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F850: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F860: 00 00 00 00  00 00 00 00  00 00 00 00  01 00 00 00 
0019F870: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019F880: 00 40 50 40  00 00 00 00  00 00 00 00  E2 3C 8D 77 
0019F890: 80 8D 26 66  89 ED 88 77  E8 21 CE 07  70 FC 86 00 
0019F8A0: 40 F9 19 00  70 FC 86 00  40 F9 19 00  38 F9 19 00 
0019F8B0: 67 3B ED 65  80 8D 26 66  95 13 73 87  D4 04 AA 07 
0019F8C0: 00 00 00 00  00 F9 19 00  2B 00 19 00  53 00 EC 65 
0019F8D0: 2B 00 19 00  2B 00 87 00  E0 FB 19 00  52 43 43 E0 
0019F8E0: 05 00 00 00  00 00 00 00  05 00 00 00  18 FB 19 00 
0019F8F0: 70 FB 19 00  74 B1 6B 76  23 00 00 31  16 02 00 00 
0019F900: 18 FB 19 00  2B 00 00 00  89 71 80 18  1E 00 00 00 
0019F910: 80 8D 26 66  5C 07 00 00  58 07 00 00  58 07 00 00 
0019F920: 61 01 00 00  40 F9 19 00  B8 F8 19 00  28 FB 19 00 
0019F930: 7C 75 FC 65  FF FF FF FF  34 FB 19 00  4A 2D ED 65 
0019F940: E9 67 01 70  4A 2D ED 65  D4 04 AA 07  99 11 73 87 
0019F950: 07 00 00 00  D8 60 80 00  60 2E ED 65  88 F9 19 00 
0019F960: 9B 78 F0 65  06 00 00 00  54 05 AA 07  34 FD FF FF 
0019F970: 70 04 00 00  34 FD FF FF  CC 02 00 00  54 00 00 00 
0019F980: 50 01 00 00  4A 47 9B A9  7C FC 19 00  E4 69 ED 65 
0019F990: 00 00 00 00  E9 67 01 70  5A 5F 07 06  E8 37 AF 68 
0019F9A0: 68 FD 19 00  00 00 00 00  00 00 00 00  40 25 80 00 
0019F9B0: 00 00 00 00  00 00 00 00  24 C6 01 62  B7 FB 19 00 
0019F9C0: FE FF FF FF  00 00 00 00  E2 3C 8D 77  58 02 79 00 
0019F9D0: 89 ED 88 77  00 00 79 00  00 00 00 00  50 45 81 00 
0019F9E0: 00 00 00 00  00 00 00 00  20 FB 19 00  56 04 89 77 
0019F9F0: 58 02 79 00  49 03 89 77  1A 45 9B A9  50 45 81 00 
0019FA00: 00 00 79 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019FA10: 00 00 00 00  00 00 00 00  02 00 00 02  00 00 00 00 
0019FA20: F4 52 08 AE  00 00 00 00  02 00 00 02  00 00 00 00 
0019FA30: 02 00 00 02  00 00 00 00  00 00 00 00  00 00 00 00 
0019FA40: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019FA50: 3D 00 00 00  4B AD FF FF  00 00 00 00  00 00 00 00 
0019FA60: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 79 00 
0019FA70: 3D 00 00 00  9C 02 79 00  00 00 00 00  80 00 00 00 
0019FA80: 00 00 00 00  50 45 81 00  00 00 00 00  00 00 00 00 
0019FA90: 01 00 00 00  41 00 00 00  01 00 00 00  00 00 00 00 
0019FAA0: 00 00 00 00  02 00 00 00  00 00 00 00  00 00 00 00 
0019FAB0: 00 00 00 00  3F 00 00 00  58 45 81 00  00 00 01 01 
0019FAC0: 3F 00 00 00  08 00 00 00  FC 00 00 00  B8 22 84 00 
0019FAD0: 00 00 00 00  00 00 00 00  41 00 00 41  03 00 00 00 
0019FAE0: 00 00 00 00  00 00 41 00  7F 00 00 00  3F 00 00 00 
0019FAF0: C0 00 79 00  4C 00 79 00  3F 00 00 00  00 00 00 01 
0019FB00: 70 02 79 00  3F 00 00 00  02 00 00 00  28 FB 19 00 
0019FB10: F4 FB 19 00  C0 0D 8C 77  5A DC 17 DE  FE FF FF FF 
0019FB20: 7C FB 19 00  DD 2C 8D 77  00 00 00 00  04 2D 8D 77 
0019FB30: 58 45 81 00  00 00 79 00  CC 33 87 00  A0 11 FE 00 
0019FB40: 02 00 00 00  90 32 87 00  00 00 00 00  47 7D F5 65 
0019FB50: 0D 11 73 87  00 00 00 00  90 32 87 00  FC FC 19 00 
0019FB60: C8 FB 19 00  3D 17 F4 65  57 45 81 00  58 45 81 00 
0019FB70: 65 11 73 87  00 00 79 00  CC 33 87 00  9C FB 19 00 
0019FB80: 36 EE 88 77  00 00 00 00  00 00 00 00  90 32 87 00 
0019FB90: 50 FB 19 00  C0 FB 19 00  66 55 FD 65  FF FF FF FF 
0019FBA0: 47 7D F5 65  20 7D F5 65  61 11 73 87  58 94 81 00 
0019FBB0: 10 78 F5 65  FC FC 19 00  90 32 87 00  01 00 00 00 
0019FBC0: F4 FB 19 00  2E 45 FC 65  FF FF FF FF  20 7D F5 65 
0019FBD0: FF 77 F5 65  06 78 F5 65  AD 16 73 87  64 52 7A 00 
0019FBE0: D8 60 80 00  68 FD 19 00  50 D0 1D 66  00 00 00 00 
0019FBF0: FC FC 19 00  90 32 87 00  30 FC 19 00  4B D9 AB 07 
0019FC00: 14 FC 19 00  BD 76 F5 65  64 52 7A 00  00 00 00 00 
0019FC10: 68 FD 19 00  38 FD 19 00  11 7E FA 65  38 FD 19 00 
0019FC20: 68 FD 19 00  64 52 7A 00  00 00 00 00  30 FC 19 00 
0019FC30: 4B D9 AB 07  4B D9 AB 07  48 FD 19 00  F0 73 13 66 
0019FC40: FF FF FF FF  00 00 00 00  00 00 00 00  CC CC CC CC 
0019FC50: 00 00 00 00  00 00 00 00  74 C2 01 10  00 00 00 00 
0019FC60: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019FC70: 00 00 00 00  00 00 00 00  00 00 00 00  61 58 F5 65 
0019FC80: 00 00 00 00  44 FC 19 00  5D 76 FA 65  94 FC 19 00 
0019FC90: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019FCA0: 00 00 00 00  00 00 00 00  FF FF FF FF  00 00 00 00 
0019FCB0: 3C C6 00 62  60 C0 01 10  64 52 7A 00  F4 FC 19 00 
0019FCC0: 9F D9 AB 07  00 00 00 00  00 00 00 00  00 00 00 00 
0019FCD0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019FCE0: 78 62 7E 00  C0 F7 3F 76  B0 52 7A 00  C0 F7 3F 76 
0019FCF0: 64 52 7A 00  08 FD 19 00  DC F7 3F 76  00 00 79 00 
0019FD00: 00 00 00 00  B0 52 7A 00  34 FD 19 00  67 F3 D8 75 
0019FD10: 54 BE 52 76  B0 52 7A 00  D8 DF 13 01  64 52 7A 00 
0019FD20: B0 52 7A 00  06 00 00 00  01 00 00 00  00 00 00 00 
0019FD30: 20 00 00 00  4C FD 19 00  E8 F2 D8 75  B0 52 7A 00 
0019FD40: 20 00 00 00  00 00 00 00  01 00 00 00  C8 FE 19 00 
0019FD50: 4A 6D 00 01  B4 52 7A 00  4B D9 AB 07  90 32 87 00 
0019FD60: B4 52 7A 00  B8 16 40 00  64 52 7A 00  B4 52 7A 00 
0019FD70: B4 52 7A 00  98 FD 19 00  94 BC 0D 01  5D 8F E7 00 
0019FD80: 30 97 E7 00  B6 8F E7 00  00 00 00 00  30 97 E7 00 
0019FD90: B6 8F E7 00  00 00 00 00  60 FE 19 00  5F 9A 0D 01 
0019FDA0: 10 8F E7 00  00 00 00 00  60 97 E7 00  B6 8F E7 00 
0019FDB0: 30 97 E7 00  10 8F E7 00  30 97 E7 00  9C 95 0D 01 
0019FDC0: B6 8F E7 00  00 00 00 00  00 22 13 01  00 00 00 00 
0019FDD0: 10 8F E7 00  10 8F E7 00  00 00 00 00  60 FE 19 00 
0019FDE0: B0 7E 0D 01  27 7F 0D 01  CC FF 19 00  59 EC 0B 01 
0019FDF0: 00 00 00 00  60 FE 19 00  17 14 40 00  00 00 00 00 
0019FE00: 10 8F E7 00  44 FE 19 00  1C FE 19 00  00 00 00 00 
0019FE10: 00 00 00 00  38 FE 19 00  00 00 00 00  78 08 29 00 
0019FE20: 01 B0 00 00  00 00 00 00  00 00 00 00  C6 3B B1 01 
0019FE30: 8F 03 00 00  46 02 00 00  66 0C 5F 00  02 02 00 00 
0019FE40: 00 00 00 00  92 00 6F 00  24 3C B1 01  8F 03 00 00 
0019FE50: 46 02 00 00  02 B2 0F 01  00 00 00 00  60 FE 19 00 
0019FE60: C8 FE 19 00  B8 16 40 00  CC FF 19 00  59 EC 0B 01 
0019FE70: C8 FE 19 00  88 FE 19 00  38 FF 19 00  10 17 40 00 
0019FE80: 38 FF 19 00  00 FE 19 00  E4 3F 00 08  09 00 00 00 
0019FE90: F0 5F 00 08  03 00 00 00  01 00 00 00  00 00 00 00 
0019FEA0: 00 00 00 00  84 92 7A 00  80 92 7A 00  D0 8E E7 00 
0019FEB0: 00 00 00 00  02 00 00 00  10 8F E7 00  01 00 00 00 
0019FEC0: 01 00 00 00  C8 FE 19 00  D0 FE 19 00  0B 17 40 00 
0019FED0: EC FE 19 00  33 EF 0B 01  DC 49 13 01  2A 6F 11 01 
0019FEE0: 38 FF 19 00  A8 DE 19 00  F8 DE 19 00  84 FF 19 00 
0019FEF0: 59 EC 0B 01  CC FF 19 00  CC FF 19 00  45 6F 11 01 
0019FF00: 38 FF 19 00  38 FF 19 00  10 17 40 00  10 34 7D 00 
0019FF10: 59 EC 0B 01  38 FF 19 00  10 17 40 00  10 17 40 00 
0019FF20: 84 FF 19 00  38 FF 19 00  EC 16 40 00  10 17 40 00 
0019FF30: 00 00 00 00  10 34 7D 00  DC 49 13 01  E4 FE 19 00 
0019FF40: 04 00 00 00  5C 4A 13 01  10 34 7D 00  78 93 12 01 
0019FF50: 8C 93 12 01  A8 93 12 01  9C 93 12 01  C4 93 12 01 
0019FF60: B8 93 12 01  00 00 00 00  A8 3B 0B 01  A1 38 0B 01 
0019FF70: 5C 40 40 00  2E 17 40 00  39 80 FC 76  00 A0 24 00 
0019FF80: 20 80 FC 76  DC FF 19 00  BB D9 8A 77  00 A0 24 00 
0019FF90: E6 41 9B A9  00 00 00 00  00 00 00 00  00 A0 24 00 
0019FFA0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019FFB0: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 
0019FFC0: 00 00 00 00  90 FF 19 00  00 00 00 00  E4 FF 19 00 
0019FFD0: C0 0D 8C 77  B2 D4 17 DE  00 00 00 00  EC FF 19 00 
0019FFE0: 3D D9 8A 77  FF FF FF FF  71 BC 8D 77  00 00 00 00 
0019FFF0: 00 00 00 00  10 17 40 00  00 A0 24 00  00 00 00 00 
AaronRobinsonMSFT commented 1 year ago
false

@ThaDaVos There is no need to set that to false as that is the default case.

Is there any example on in what way the files should be placed, how they should be loaded,

Consider the project found in Sample/. This project will produce several files but only the following are needed at run-time. The below list is for a Windows build.

I also used Powershell (x86) with Add-Type to try and load it.

PowerShell is a .NET process so loading the managed assembly directly is the preferred option. DNNE is designed to facilitate the loading of a .NET library into an unmanaged (for example, C/C++) process. If the process is .NET, then using DNNE is likely unnecessary. If using DNNE is desired in a managed process the easiest way to achieve that is using DllImport or LibraryImport (.NET 7) to load the unmanaged binary.

sadly it throws this now:

Can you share the C# exports that are being generated? This is likely a case of incorrect pointer manipulation.

ThaDaVos commented 1 year ago

I created a Git project and it's on the following repo: https://github.com/ThaDaVos/clarion-lib-printer-interop

ThaDaVos commented 1 year ago

I fixed it - did the import wrong on Clarion's side: WAS:

module('PrinterInteropNE_Clarion.lib')
    openDrawer(BSTRING,BSTRING),PASCAL,raw,dll(1),name('openDrawer')
end !module('PrinterInteropNE_Clarion.lib')

NOW:

module('PrinterInteropNE_Clarion.lib')
    openDrawer(BSTRING,BSTRING),C,raw,dll(1),name('openDrawer')
end !module('PrinterInteropNE_Clarion.lib')
ThaDaVos commented 1 year ago

Also, do you really need all the DLLs which are outputed during publish? I mean all the framework dlls? Isn't there a way to combine them all into one?

ThaDaVos commented 1 year ago

Okay, figured that out - for my project I only need the following files (ignore the printerinterop text file, that's a log file): afbeelding

The thing is, it worked.... don't know what changed, but the generated .runtimeconfig.json changed contents and now it no longer works...

WORKING:

{
  "runtimeOptions": {
    "tfm": "net7.0",
    "rollForward": "LatestMinor",
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "7.0.0"
    },
    "configProperties": {
      "System.Globalization.Invariant": true,
      "System.Globalization.PredefinedCulturesOnly": true,
      "System.Reflection.Metadata.MetadataUpdater.IsSupported": false
    }
  }
}

BROKEN:

{
  "runtimeOptions": {
    "tfm": "net7.0",
    "includedFrameworks": [
      {
        "name": "Microsoft.NETCore.App",
        "version": "7.0.0"
      }
    ],
    "configProperties": {
      "System.Globalization.Invariant": true,
      "System.Globalization.PredefinedCulturesOnly": true,
      "System.Reflection.Metadata.MetadataUpdater.IsSupported": false
    }
  }
}

Any idea what changed this?

Also, is there a way to include the Runtime inside the library.dll to ease distribution? Now one needs to install the Desktop Runtime

AaronRobinsonMSFT commented 1 year ago

Any idea what changed this?

Not at all. DNNE doesn't influence anything in the runtimeconfig.json file. This is likely related to some SDK change or another project system setting.

Also, is there a way to include the Runtime inside the library.dll to ease distribution? Now one needs to install the Desktop Runtime

Not at present. If you want a single package, then I would consider NativeAOT for a library. However, that does come with other limitations.

ThaDaVos commented 1 year ago

Not at all. DNNE doesn't influence anything in the runtimeconfig.json file. This is likely related to some SDK change or another project system setting.

Gotta figure out what's doing this then - as this change causes it not to work anymore (EDIT): Figured it out, it was <SelfContained>true</SelfContained> which changes this - weird thing is, it is not self contained at all - don't see the size of the DLL changing

Not at present. If you want a single package, then I would consider NativeAOT for a library. However, that does come with other limitations.

Sadly NativeOAT is only for X64 - I need X86 - so i need to use DNNE - I read something about that there is experimental single file support - is there any documentation on that?

I also checked ILMerge but it won't take the *NE.dll sadly

AaronRobinsonMSFT commented 1 year ago

it is not self contained at all - don't see the size of the DLL changing

The "self contained" scenario is different from "single file". Self contained means all necessary binaries should be placed in the published output - see here. The single file scenario is about creating a single file that can be deployed, which has all needed managed and native assets within the same binary.

I read something about that there is experimental single file support - is there any documentation on that?

DNNE has experimental support for self contained not single file. I believe that was referenced in the original post. Brief notes can be found below.

https://github.com/AaronRobinsonMSFT/DNNE/blob/73a44e858d7811c646fc5205f347ae098fa494ce/src/msbuild/DNNE.props#L87-L93

I also checked ILMerge but it won't take the *NE.dll sadly

ILMerge only merges IL, not native binaries that DNNE creates to expose the desired exports.

ThaDaVos commented 1 year ago

I noticed that the output with self-contained doesn't work though - or does one need to set <SelfContained>true</SelfContained> and <DnneSelfContained_Experimental>false</DnneSelfContained_Experimental> to true and configure it by the note to get it working?

Because currently it crashes - even if the whole output is there and Runtime is installed

AaronRobinsonMSFT commented 1 year ago

I noticed that the output with self-contained doesn't work though even if the whole output is there and Runtime is installed

From the DNNE perspective the only change is the underlying API called during the initial load of the runtime. This is experimental because, as the referenced comment above notes, the developer must construct the local runtime manually. DNNE won't do that and I don't think setting SelfContained will work because that only applies to applications not libraries.

From the comment describing DnneSelfContained_Experimental.

The user must also copy the appropriate runtime binaries to create a valid self-contained install environment.

AaronRobinsonMSFT commented 1 year ago

@ThaDaVos Closing this as it seems it is handled. Please let me know if there is still confusion about how to use DNNE.