возвращает указатель на функцию из либы. Могу ли я как-то привести unsafe.Pointer на C функцию к func()? Я понимаю, что можно сделать обертку и вызывать эту функцию из C передавая указатель в качестве аргумента. Но хочется, чтобы можно было разное кол-во аргументов передавать в зависимости от подгруженной функции. А CGO не поддерживает variadic functions.
Скорее всего, надо в C коде определить какую-то обертку, которая будет вызывать функцию по указателю
Я же написал, что тогда я не смогу передавать разное кол-во аргументов при вызове, потому что variadic не поддерживается. Хотя вызов сишных функций из CGO по умолчанию чекает типы в сигнатуре..
Тут можно выходить из положения только тем, что писать обертки для 1,2,3,4,...N параметров Потому что Cgo variadic никак не поддерживает
Обидно, либо передавать массив аргументов. Что ограничивает целевую функцию его принятием.
пишите на сишечке :)
Так я и пишу… Дайлибы мне как без сишечки подгружать то. Хочу просто для себя универсальный инструмент написать для таких мостов
В вашем компиляторе C и в go может даже call convention отличаться, конечно нельзя
Типо того
Сервис + unix socket + shared memory
я не знаток, но ffi готовых нет?
Есть вроде бы только без CGO или с костылями
Тогда непонятно чего вы ожидаете
Какого-нибудь магического способа чтобы все заработало, который я упускаю
Вы хотите гошные функции скармливать сишной функции, которая принимает указатель на функцию?
насколько я понял, наоборот, но в си функция может быть variadic.
Обсуждают сегодня