使用 64 位 class 库时的 Inno Setup 'Could not call proc'

Inno Setup 'Could not call proc' when using 64-bit class library

这是脚本:

[Setup]
ArchitecturesInstallIn64BitMode=x64
ArchitecturesAllowed=x64

[Files]
Source: "DotNet64.dll"; Flags: dontcopy

[Code]
function TestFunction(): Boolean;
external 'Testing@files:DotNet64.dll stdcall setuponly delayload'; 

procedure CurPageChanged(CurPageID: Integer);
var
  ires : Boolean;
begin
  if CurPageID = wpWelcome then begin
    ires := TestFunction();
  end;
end;

这是 C# DLL 代码

using RGiesecke.DllExport;
using System.Runtime.InteropServices;
using Microsoft.Win32;

namespace DotNet64
{
    public class InnSetDLL
    {
      [DllExport("Testing", CallingConvention = CallingConvention.StdCall)]
      public static bool Testing()
      {
         return false;
      }
   }
}

一旦在脚本中调用 TestFunction(),我就会弹出一个窗口:

Runtime Error (at 2:55): Could not call proc.

DotNet64.dll 是否编译为 64 位 DLL?根据 documentation,InnoSetup 无法访问 64 位 DLL。您可以将其编译为 32 位 DLL 或编写调用 64 位 DLL 并执行 64 位 EXE 的 64 位 EXE。