Вверх ↑
Ответов: 879
Рейтинг: 101
#1: 2020-10-20 23:33:57 ЛС | профиль | цитата
Не очень понимаю в чем дело но вот дело не работает

иметься UnityPlayer.dll с одной единственной функцией UnityMain которой вроде всё равно кто и как её вызывает, всегда работает.

код на си

HMODULE hDll = LoadLibrary("UnityPlayer.dll");
pFunc UnityMain = (pFunc)GetProcAddress(hDll, "UnityMain");
UnityMain();
FreeLibrary(hDll);

но вот fpc64 выдает кракозябры и floating point overflow
InlineCode для хиасма

unit HiAsmUnit;
interface

uses kol,Share,Debug,windows;

type

 THiAsmClass = class(TDebug)
   private

   public
   
   procedure doLoad(var dt: TData; idx: word);

 end;

implementation

 procedure THiAsmClass.doLoad;
 var
   fUnityMain : procedure; cdecl;
   LibHandle : THandle;

 begin
   LibHandle := LoadLibrary(PAnsiChar('UnityPlayer.dll'));

   if LibHandle ‹› 0 then
     begin
       fUnityMain := GetProcAddress(LibHandle, 'UnityMain');
       if @fUnityMain ‹› nil then
         fUnityMain;
     end;
   fUnityMain := nil;
   FreeLibrary(LibHandle);
 end;  
end.

по ссылке архив со всем необходимым, (если у вас есть игра на Unity и нужная DLL то архив не нужен)
https://yadi.sk/d/kGlNvPC-0_JEOw
карма: 1

0
Редактировалось 1 раз(а), последний 2020-10-20 23:35:15