Публикации по теме 'cgo'


Расширение Python с помощью Go - часть 1
Одной из наиболее интересных особенностей CPython является возможность добавлять новые встроенные модули в Python, написанные на C. Python предоставляет полезное C Api для этого, набор заголовков и основных типов для написания расширений на C, включенных в исходный файл C. включив заголовок Python.h В этой статье я дам вам обзор того, как расширить Python 3 с помощью C, а затем мы попытаемся сделать то же самое, используя современный язык, такой как Go. Начнем с буквы C..

Вопросы по теме 'cgo'

Как правильно преобразовать массив символов в кодировке UTF-8 в строку Go при использовании C-библиотеки в Go?
Я пытаюсь использовать библиотеку C в Go. Функция C.PrlFoundVmInfo_GetName записывает строку в кодировке UTF-8 в name с длиной nBufSize . // PRL_CHAR sName[1024]; var sName [1024]C.PRL_CHAR // PRL_UINT32 nBufSize = sizeof(sName); var...
491 просмотров
schedule 07.06.2023

Правильное использование пустой структуры с CGO
Работа с gssapi.h struct gss_name_struct; typedef struct gss_name_struct * gss_name_t; Я пытаюсь понять, как правильно инициализировать переменную, содержащую это, var output_name C.gss_name_t = &C.struct_gss_name_struct{} Но...
685 просмотров
schedule 09.10.2022

Golang: Экспортируйте поля C, чтобы они были видны извне, с помощью CGo
Предыстория: я пытаюсь создать пакет, который, по сути, предоставляет тонкие оболочки Go для библиотеки C, которую я использую. Пакет намеренно очень сырой, так как несколько других пакетов зависят от низкоуровневых функций библиотеки C, и я не хочу...
1501 просмотров
schedule 10.04.2023

Можно ли написать функции C, которые изменяют структуры типов, определенных в коде Go?
Это продолжение этого вопроса . Я сделал там предположение, которое может быть неверным, поэтому я прямо спрашиваю об этом. Поскольку я забыл спросить, возможно ли это на самом деле, я уже подал проблему. #8114 об этом. С помощью cgo...
229 просмотров
schedule 24.05.2023

передача массива байтов из go в cgo
У меня есть следующий код C uint32_t cHash32(const char *s, size_t len) { return util::Hash32(s, len); } Я вызываю его из проекта go следующим образом func Hash32(s []byte) uint32 { return...
3223 просмотров
go c cgo
schedule 11.05.2023

Как обернуть приветственный мир C с помощью argv, используя cgo?
Рассмотрим следующее hello.c : #include <stdio.h> int main(int argc, char* argv[]) { printf("Hello, world! argv[0]=%s\n", argv[0]); } Makefile содержит только одну строку: all: hello . Как я могу обернуть (и скомпилировать) эту...
773 просмотров
go c cgo
schedule 10.11.2022

Golang CGO не может использовать преобразованную строку
Я пытаюсь установить заголовок командной строки Windows, используя CGO и заголовок Windows c: // #include <windows.h> import "C" import "unsafe" func Title(title string) { ctitle := C.CString(title) defer C.free(unsafe.Pointer(ctitle))...
698 просмотров
schedule 28.02.2023

Сборка мусора в cgo
У меня есть следующий код в Go, который использует cgo: func foo() { bar := new(C.struct_bar) ... } Будет ли bar собираться после того, как функция завершит свое выполнение, или мне нужно явно вызвать free?
748 просмотров
schedule 04.10.2022

Паника из-за нехватки памяти при доступе к функции из общей библиотеки
Я пытаюсь создать образец библиотеки общих объектов с помощью Go. Код компилируется (с помощью команды go build -o libsample.so -buildmode=c-shared . ), библиотека общих объектов успешно создается, но при доступе к экспортированному методу через JNA...
527 просмотров
schedule 13.06.2023

C char name[8] to GoLang Name [8]byte
У меня есть функция C, которая заполняет структуру C: typedef struct { char name[8]; } Мне нужно скопировать данные в структуру Go lang с тем же содержимым: type sData struct { Name [8]byte } Структура имеет параметры нескольких...
936 просмотров
schedule 08.12.2022

Как заполнить указатель void* C в Go?
Я пытаюсь взаимодействовать с некоторым кодом C из Go. Используя cgo, это было относительно просто, пока я не столкнулся с этим (довольно распространенным) случаем: необходимость передать указатель на структуру, которая сама содержит указатель на...
3472 просмотров
schedule 16.06.2023

cgo(golang): ошибка: неполная ссылка на «привет»
Я просто пишу очень простую демонстрацию для проверки загрузки общей библиотеки с помощью кода cgo(golang).the следующим образом: ххх.ч #pragma once void myprint(const char *str); ххх.с #include "xxx.h" #include <stdio.h> void...
764 просмотров
schedule 25.03.2023

cgo мне нужно освободить память для переменной, возвращаемой функцией C, чтобы перейти
Я новичок в cgo и у меня есть пара вопросов по управлению памятью. Скажем, у меня есть простая функция c, как показано ниже: char* get_str_in_arr(char **charArr, size_t i){ return charArr[i]; } мне нужно освободить память, как показано...
607 просмотров
schedule 14.09.2022

преобразовать [] float32 в C * float
Я хочу передать указатель на первый элемент слайса []float32 в переменную C, но почему-то не могу понять, как это сделать. Код С: typedef struct { const float *data_in ; float *data_out ; } SRC_DATA ; Go: mySlice :=...
799 просмотров
schedule 28.02.2023

libpng в пакете golang
Мне нужно импортировать этот пакет. Требуются zlib и libpng. Я компилирую zlib и libpng с помощью MinGW (моя ОС - Windows 8.1 64). libpng.a теперь в папке MinGW lib, но ничего не изменилось, та же ошибка: In file included from...
537 просмотров
schedule 25.04.2022

Предварительная компиляция части программы Go, которая использует C для скорости
Часть моей программы Go опирается на очень большую кодовую базу C с использованием import "C" , компиляция которой занимает несколько минут. Есть ли способ предварительно скомпилировать эту библиотеку C как таковую или создать ветку моей программы...
176 просмотров
go c cgo
schedule 30.06.2022

Функция экспорта, которая возвращает массив двойников
Как в Голанге экспортировать функцию, которая возвращает массив двойников. То, как это было возможно раньше, теперь возвращает «ошибка времени выполнения: результат cgo имеет указатель Go»: //export Init func Init(filename string) (C.int,...
587 просмотров
schedule 24.08.2022

Ошибка выполнения с cgo и некоторыми фрагментами строки
Я убрал проблему, с которой столкнулся, когда оборачивал некоторый код C для работы с golang с использованием swig, но проблема не связана с swig. Я могу передать срез базовой строки, но как только я создаю срез с чем-либо, кроме базовых строк, я...
383 просмотров
schedule 27.05.2022

Небуферизованный менеджер ввода в Go?
Я создаю простую консольную игру в Go. Я хочу каким-то образом принимать небуферизованный ввод (например, вы вводите одну клавишу, и она немедленно возвращается). Я начал с этого кода: func InitInput() { exec.Command("stty", "-f", "/dev/tty",...
290 просмотров
schedule 29.07.2023

CGO: Как вы используете указатели в Golang для доступа к данным из массива в C
Я пишу приложение для платформы Windows, используя FFmpeg и его goav-оболочку golang, но у меня возникли проблемы с пониманием того, как использовать указатели C для получения доступа к массиву данных, на который они указывают. Я пытаюсь получить...
1670 просмотров
schedule 20.01.2023