Описание тега 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