Вызов функций общей библиотеки Linux в Go
В этом вопросе разработчик обращается за помощью в вызове функций из общего объекта (.so) файл в своем коде Go. Пакет ctypes в Python, который обеспечивает доступ к функциям C, выполняет требуемую функциональность.
Использование cgo для загрузки статической общей библиотеки
Для статического вызова функций известной общей библиотеки во время компиляции, можно использовать пакет cgo. Вот пример доступа к функции bar() из libfoo.so:
package example
// #cgo LDFLAGS: -lfoo
//
#include
import "C"
func main() {
C.bar()
}
Динамическая загрузка общей библиотеки с помощью cgo
В качестве альтернативы cgo может облегчить доступ к общим объектам, динамически загружаемым во время выполнения. Чтобы открыть общую библиотеку, получить адреса функций и закрыть библиотеку, необходимо использовать функции dlopen(), dlsym() и dlclose(). Однако эти функции изначально не поддерживаются Go, и для реализации необходимой логики требуется оболочка C.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3