Здравствуйте, гость ( Вход | Регистрация )

> вопрос по ffi и типы данных
trico
сообщение 27.3.2020, 9:25
Сообщение #1


**

Neophyte
Сообщений: 31
Регистрация: 23.12.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.593
Возраст: 26



Пишу плагин на делфи, с integer разобрался:
Код
local ffi = require("ffi")
local lib = ffi.load("getpix.dll")

ffi.cdef[[
   __cdecl int getpix(int h, int x, int y);
]]


а вот если у меня boolean либо string?? Ну или же своя структура. Как указать это в синтаксисе луа в пилоте?
на __cdecl bool getf(string patch); ругается "declaration specifier expected near 'string'"

нужно обмениваться с длл типами данных string, bollean, array[a,b]. как это должно выглядеть?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
trico
сообщение 1.7.2020, 9:51
Сообщение #2


**

Neophyte
Сообщений: 31
Регистрация: 23.12.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.593
Возраст: 26



не раз возвращаюсь к этому топику, и не могу добиться результата. вот к примету со структурой (возврат более 2 и более значений из функции.) допустим, необходимо вернуть не одно число, а координаты:

пилот

--lua
local ffi = require("ffi")
local lib = ffi.load("findimg.dll")

ffi.cdef[[
struct my_struct{
int x;
int y;
};
__cdecl const struct my_struct* testf(int x, int y);
]]

local result = lib.testf(10,20)
log(result.x, result.y)



dll

type
FRes3 = record
x,y: integer;
end;

{....}

function testf (a,b:integer):FRes3; cdecl;
var
r:FRes3;
begin
r.x := a;
r.y := b;
testf := r;
end;


данные не возвращаются в таком исполнении. что не так?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения



Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.9.2025, 19:55
Designed by Nickostyle