169 похожих чатов

Коллеги, никто не подскажет, почему из Rcpp утекает экспорт в

пакет?
Обнаружил после установки из-за подсказок IDE, getNamespaceExports('my_package') выдает примерно такой список
[1] "setRcppClass" "exposeClass"
[3] "prompt" ".__C__C++Field"
[5] "library.dynam.unload" "populate"
[7] "initialize" ".__T__$<-:base"
[9] "sizeof" "cppFunction"
[11] "getRcppVersion" ".__C__C++Function"
[13] "evalCpp" ".__C__C++Constructor"
[15] "loadRcppClass" ".__T__prompt:utils"
[17] ".__C__C++OverloadedMethods" "LdFlags"
[19] "hllrst_run_threads" ".__T__show:methods"
[21] "loadModule" ".__T__[<-:base"
[23] "cpp_object_initializer" ".__T__.DollarNames:utils"
[25] "compileAttributes" ".__T__initialize:methods"
[27] ".__C__C++Object" "system.file"
[29] ".__T__[[<-:base" "sourceCpp"
[31] "cpp_object_dummy" "Rcpp.plugin.maker"
[33] "RcppLdFlags" ".__C__RcppClass"
[35] "Module" ".__T__[:base"
[37] "registerPlugin" "hllrst_random_number"
[39] "loadRcppModules" ".DollarNames"
[41] ".__C__C++Class" ".__T__formals<-:base"
[43] "formals<-" "demangle"
[45] ".__T__$:base" ".__C__Module"
[47] "Rcpp.package.skeleton" "show"
который, естественно, включает и полезные функции.

11 ответов

2 просмотра

Тут по сути все зависимости твоего пакета представлены, в том числе от Rcpp.

⌨️- Автор вопроса
Артём Клевцов
Тут по сути все зависимости твоего пакета представ...

Я понимаю, но проблема в другом. Если я возьму другой пакет, в котором есть несколько CPP функций, собранный через Rcpp и roxygen2 мной же, то там в публичном экспорте собственно то, что я задекларировал, и никакого мусора. Здесь же - в минимальном пакете с буквально двумя экспортируемыми CPP функциями - куча мусора, который видно (на мой субъективный взгляд) быть не должно. Вопрос почему так, я подумал может кто с таким сталкивался и знает в чем дело. Ощущение, что какая-то зависимость прописана неправильно

⌨️
Я понимаю, но проблема в другом. Если я возьму дру...

Что в импортах? Должно быть: importFrom(Rcpp,evalCpp) useDynLib(mypkg, .registration = TRUE)

⌨️
Я понимаю, но проблема в другом. Если я возьму дру...

Это из-за devtools::load_all(). > library(uaparser) > getNamespaceExports("uaparser") [1] "parse_browser" "parse_device_type" "parse_user_agent" [4] "update_regexes" "parse_os" "parse_device" > devtools::load_all(".") Loading uaparser > getNamespaceExports("uaparser") [1] "library.dynam.unload" "system.file" [3] "parse_browser" "parse_device_type" [5] "_uaparser_uap_release" "download.file" [7] "uap_release" "_uaparser_parse_device" [9] "evalCpp" "parse_user_agent" [11] "_uaparser_uap_init" "_uaparser_parse_os" [13] "update_regexes" "parse_os" [15] "parse_device" "_uaparser_parse_user_agent" [17] "_uaparser_parse_browser" "_uaparser_parse_device_type" [19] "uap_init" "onUnload"

⌨️- Автор вопроса
Артём Клевцов
Что в импортах? Должно быть: importFrom(Rcpp,evalC...

# Generated by roxygen2: do not edit by hand importFrom(Rcpp,sourceCpp) useDynLib(hellorust)

⌨️- Автор вопроса
⌨️
load_all нигде не используется

Значит где-то используется. Его RStudio может где-то вызывать. Попробуй поставить пакет через R CMD build/R CMD INSTALL и посмотреть Rscript -e 'getNamespaceExports("mypkg")'.

⌨️- Автор вопроса
Артём Клевцов
Значит где-то используется. Его RStudio может где-...

Ок, спасибо, буду смотреть где этот вызов мог затеряться

⌨️
# Generated by roxygen2: do not edit by hand impo...

У меня только evalCpp импортируется. https://cran.r-project.org/web/packages/Rcpp/vignettes/Rcpp-package.pdf Пункт 2.8.

⌨️- Автор вопроса
Артём Клевцов
У меня только evalCpp импортируется. https://cran....

Ну у меня в нормальном пакете так же, а тут просто я попытался скрестить нескрещиваемое и получается не очень)

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
8
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Карта сайта