иметься 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 раз(а), последний 2020-10-20 23:35:15