Публикации по теме '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 просмотров
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 просмотров
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 просмотров
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