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

> ffi создание указателя на многомерный массив
DarkMaster
сообщение 7.8.2022, 20:11
Сообщение #1


***********

Модератор UOPilot
Сообщений: 9.474
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27785
Пользователь №: 11.279



Собственно есть некоторый указатель на void либо просто number с адресом.
Нужно создать указатель на int[123][321] по этому адресу.
cast ругается на такие выкрутасы ну либо я что-то не так по синтаксису делаю.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 10.8.2022, 2:33
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.474
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27785
Пользователь №: 11.279



Спасибо. Чую долго бы я еще развлекался...
Итоговое безобразие получилось такое:
Код
local ffi = require("ffi")
ffi.cdef([[
    typedef int int2d[10];
]])

local int100 = ffi.new("int[100]")
for i = 0, 100 do
    int100[i] = i
end

local arr = ffi.cast("int2d*", int100)
log(tostring(arr[0][1]))
log(tostring(arr[1][1]))

Размерность сделал в typedef на одну меньше иначе пришлось бы указатель каждый раз разименовывать через [0] и по факту получить доп размерность. Фишки luajit.
указатель на int100 улетает в либу, результат в луа.

Сообщение отредактировал DarkMaster - 10.8.2022, 2:34


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
DarkMaster   ffi создание указателя на многомерный массив   7.8.2022, 20:11
Cockney   В плюсах (парсер ffi примерно от туда) нельзя каст...   7.8.2022, 22:49
Cockney   еще вот такой урод можно испытать, сначала делаем ...   7.8.2022, 23:40
DarkMaster   орет invalid C type как только видит квадратные ск...   8.8.2022, 1:12
Cockney   А ескейп работает ? Типа \[\]   8.8.2022, 1:20
DarkMaster   Начинает орать про eof. Такое впечатление как-будт...   8.8.2022, 1:29
Cockney   А в чем сакральный смысл каста именно к размерност...   8.8.2022, 1:38
DarkMaster   Чтобы первый индекс работал второй должен быть из...   8.8.2022, 1:41
Cockney   Чтобы первый индекс работал второй должен быть из...   8.8.2022, 1:52
Cockney   Тут парни чет нагородили https://stackoverflow.co...   8.8.2022, 2:11
DarkMaster   Вот смотри, у нас есть некоторый *int и последоват...   8.8.2022, 2:39
DarkMaster   https://stackoverflow.com/questions/1052818...mens...   8.8.2022, 3:05
Cockney   Могу только посочувствовать и пожелать успехов   8.8.2022, 12:45
DarkMaster   Если все-таки будет желание. Наткнулся на такую ве...   8.8.2022, 18:12
Cockney   Если все-таки будет желание. Наткнулся на такую в...   8.8.2022, 18:26
DarkMaster   В таком варианте не понятно как его инициализиров...   8.8.2022, 19:00
Cockney   Сначала тайпдеф, потом создать объектом с типом ar...   8.8.2022, 20:54
DarkMaster   Так в ffi.cdef тайп дефе невозможно сделать что-то...   8.8.2022, 21:38
Cockney   Так в ffi.cdef тайп дефе невозможно сделать что-т...   8.8.2022, 22:55
DarkMaster   local arr = ffi.typeof("int[$...   8.8.2022, 23:46
Cockney   local arr_type = ffi.typeof("int[...   8.8.2022, 23:58
Cockney   local arr_type = ffi.typeof("int[...   9.8.2022, 17:11
DarkMaster   new создаст объект, а не указатель. Если в тип доб...   9.8.2022, 0:39
Cockney   new создаст объект, а не указатель. Если в тип до...   9.8.2022, 0:58
DarkMaster   Адрес могу предоставть - это не проблема. Проблема...   9.8.2022, 1:23
Cockney   а из си можно сразу вернуть int[][] например так i...   9.8.2022, 10:45
DarkMaster   То упадет в обморок при виде скобок...   9.8.2022, 11:32
DarkMaster   declaration specifier expected near 'arr_type...   9.8.2022, 18:13
Cockney   Напомни, а тайпдеф ты пробовал делать внутри cdef ...   9.8.2022, 20:23
Cockney   local ffi = require("ffi") ffi.cd...   9.8.2022, 21:48


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

 

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