Вверх ↑
Ответов: 872
Рейтинг: 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