Описание тега nativecall

Механизм Raku для вызова кода из установленных библиотек C. Ниже приведен полный пример, в котором для открытия окна сообщения используются установленные библиотеки C в Windows: используйте NativeCall; sub MessageBoxA(int32, Str, Str, int32) возвращает int32 is native('user32') { * } MessageBoxA(0, "У нас есть NativeCall", "ohai", 64);
1 ответ

Код NativeCall для использования разветвления Posix и конвейера не работает

Хорошо, так что я новичок в Perl и Perl 6. Я думал, что увижу, смогу ли я заставить работать разветвление и обвязку, но пока не смог. Вот мой код Perl 6: use NativeCall; # http://www.perlmonks.org/?node_id=989766 our sub c_close(int32) returns int32…
17 дек '16 в 19:38
0 ответов

Есть ли способ перечислить функции и структуры данных, доступные из нативного интерфейса в Perl 6?

Главным образом с целью создания разумных примеров, я хотел бы знать, какие структуры данных и раунды доступны для использования в Perl6 native интерфейс, как в class a-class is repr('CStruct') { has int $.whatever; } class another-class is repr('CP…
24 апр '18 в 10:37
0 ответов

Установка Perl 6 для MSYS2 в Windows 10

Я хочу разработать приложение GTK+3 для Windows 10 с использованием Perl 6 и его библиотеки NativeCall. Я установил MSYS2 и GTK+3 на нем и мог запустить пример программы GTK+3 C, используя его. Но я не смог установить Perl 6 на MSYS2. Я пытался найт…
23 окт '18 в 06:46
2 ответа

Передача указателя на указатель в Perl 6 NativeCall

Я пытаюсь использовать NativeCall для взаимодействия с некоторыми функциями Си. В одном случае мне нужно передать указатели, которые обновляются функцией, поэтому ей нужен указатель на указатель 'void **'. Я попробовал это так: class Foo { has Point…
21 апр '17 в 12:52
1 ответ

Уничтожает ли Perl 6 nativecast() для объекта с repr('CPointer'), когда GC'ed?

Чтение Основного использования Указателей указывает, что когда NativeCall Функция C возвращает указатель на объект с классом с repr('CPointer')позвонит submethod DESTROY где я могу поставить свою функцию, чтобы освободить память C. (Между прочим, эт…
11 фев '18 в 20:01
2 ответа

Как определить строки фиксированной длины в структуре Perl6 NativeCall?

У меня есть сторонняя библиотека C, которая определяет структуру, похожую на: struct myStruct { int a; int b; char str1[32]; char str2[32]; }; И функция, которая берет указатель на эту структуру и заполняет ее. Мне нужен мой собственный вызов Perl6,…
29 сен '17 в 03:08
1 ответ

Создание нового файлового дескриптора из stdout с помощью fcntl завершается неудачно в файлах

У меня есть простой тестовый файл, который выглядит так: use v6.c; use NativeCall; sub fcntl(int32, int32 --> int32) is native { * } sub close(int32 --> int32) is native { * } my $fd := fcntl($*OUT.native-descriptor, 0); say $fd; close($fd); В…
30 мар '18 в 12:49
1 ответ

Странное сообщение, объявляющее Pointer[void] в модуле perl6 NativeCall

Эти фрагменты кода могут показаться странными, потому что я начал с исходного кода и обрезал фрагменты, пока не пришел к минимальному набору инструкций, которые воспроизводили ошибку. Так что терпите с явной бесполезностью. Есть два модуля perl6, од…
01 июл '18 в 10:32
1 ответ

Тройной указатель родного вызова на Perl 6

Я пытаюсь обернуть SD-Bus с Perl6, но есть проблема с тройным указателем вызова функции.с sd-bus.h int sd_bus_list_names(sd_bus *bus, char ***acquired, char ***activatable); /* free the results */ попробуй с родным звонком sub sd_bus_list_names(Poin…
27 май '18 в 14:52
1 ответ

Собственное локальное время ()

Я, кажется, делаю что-то не так в этой попытке разоблачить localtime функциональность в Perl 6: use NativeCall; my class TimeStruct is repr<CStruct> { has int32 $!tm_sec; has int32 $!tm_min; has int32 $!tm_hour; has int32 $!tm_mday; has int32 …
29 апр '18 в 14:55
1 ответ

Родной интерфейс вызова: как перевести "wchar_t"?

Я хотел бы использовать нкурсы int addwstr(const wchar_t *wstr); функция в Perl6. Как я мог получить подписи Perl 6, который передает const wchar_t *wstr из addwstr? use v6; use NativeCall; constant LIB = 'libncursesw.so.5'; sub addwstr( ? ) returns…
04 мар '16 в 13:22
1 ответ

Структура NativeCall, которая содержит указатель

У меня есть следующая структура: typedef struct _info{ DWORD myInfo; BYTE *pInfo; LPWSTR ExtData; } Info; Я представил эту структуру, используя NativeCall таким образом: class Info is repr('CStruct') { has int32 $.myInfo; has Pointer[int8] $.pInfo ;…
06 фев '16 в 21:13
1 ответ

Как смягчить ошибку в Rakudo с NativeCall?

Я хочу иметь возможность использовать двойной указатель в классе с REPR CStruct/CPointer: typedef struct CipherContext { void *cipher; const uint8_t *key; size_t key_len; const uint8_t *path; size_t path_len; size_t block_size; void *handle; int (*c…
05 фев '19 в 20:11
1 ответ

ncurses: почему getch не ждет, пока я нажму клавишу?

Со страницы руководства Linux по ncurses(3): Опция nodelay заставляет getch быть неблокирующим вызовом. Если вход не готов, getch возвращает ERR. Если отключено (bf - FALSE), getch ждет, пока не будет нажата клавиша. Почему в моем примере getch не ж…
20 мар '16 в 17:02
0 ответов

Как обрабатывать варагоны с помощью NativeCall

Я пишу привязки для Editline и одной из ее функций, history, выполняет основную часть работы для этой части библиотеки, но имеет несколько возможных подписей: :(Pointer[Internal], Pointer[Event], int32 --> int32) :(Pointer[Internal], Pointer[Even…
31 мар '18 в 08:55
1 ответ

В Perl 6, как я могу преобразовать необработанные байты в число с плавающей запятой, используя интерфейс NativeCall?

Из этого разговора на канале Perl 6 IRC и вопроса, опубликованного Мартином Бартом, я пытаюсь воспроизвести этот код C, используя интерфейс Perl6 NativeCall, который используется для этой цели. Вот что я попробовал: use NativeCall; my uint32 $num = …
29 апр '18 в 11:15
1 ответ

Объявление массива внутри Perl 6 NativeCall CStruct

Есть ли способ объявить массив объектов внутри CStruct? struct my_struct { int foo; int bar; char somestring[80]; }; class My::Struct is repr('CStruct') { has int32 $.foo; has int32 $.bar; ??? } CArray[uint8] будет char * указатель, фактически не ре…
06 фев '18 в 15:11
1 ответ

Ракудо Память / Методы сбора мусора

Я понимаю, что этот вопрос граничит с конкретными областями реализации, но на этом этапе конкретные ответы Rakudo/MoarVM мне тоже могут помочь. Я работаю над некоторыми модулями NativeCall и задаюсь вопросом, как отлаживать утечки памяти. Некоторая …
09 фев '18 в 14:17
2 ответа

NativeCall загружает библиотечный символ, который я не называю

У меня есть две библиотеки, я хочу вызвать подпрограммы в первой библиотеке, затем они вызывают подпрограммы во второй библиотеке, но сбой, потому что эти символы не определены. Можно ли сказать "загрузить эти символы" из библиотеки XX, хотя я не хо…
28 фев '18 в 18:33
1 ответ

Добавление типов пользовательских режимов для структур Perl 6 NativeCall

Документы Perl 6 содержат список типов. Некоторые из них, такие как Str, иметь более сложное поведение box/unbox. Можно ли определить мой собственный тип, указав мои собственные процедуры для коробки / распаковки? Для конкретного проекта у меня есть…
06 май '17 в 14:10