Include and use precompiled .dll / .so in R package
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I would like to create an R package that contains a precompiled .dll/.so file. It is unclear to me where to put the file in the package structure (e.g. in the folder inst?) and how to load it -- e.g. what lines do I need to add to other files that allow the .dll or .so to be loaded and functions contained in it to be used.
In particular, I would like to see some examples for the use of dyn.load()
, .C()
and library.dynam()
.
In a normal script that is not a package, I would load the dll via
dyn.load("path/to/my_dll.dll")
and then call specific functions contained in that .dll by using
.C("dll_func", input)
However, this seems to be different when trying to convert my script into a package.
Also, do I need .onLoad
and how do I use it correctly?
r dll r-package
add a comment |
I would like to create an R package that contains a precompiled .dll/.so file. It is unclear to me where to put the file in the package structure (e.g. in the folder inst?) and how to load it -- e.g. what lines do I need to add to other files that allow the .dll or .so to be loaded and functions contained in it to be used.
In particular, I would like to see some examples for the use of dyn.load()
, .C()
and library.dynam()
.
In a normal script that is not a package, I would load the dll via
dyn.load("path/to/my_dll.dll")
and then call specific functions contained in that .dll by using
.C("dll_func", input)
However, this seems to be different when trying to convert my script into a package.
Also, do I need .onLoad
and how do I use it correctly?
r dll r-package
3
Possible duplicate of How to load compiled library in an R package. tl;dr : putmy_dll.dll
ininst/lib/
and trydyn.load(system.file("lib/my_dll.dll", package=<mypkg>))
– duckmayr
Jan 3 at 13:50
Nothing about theonLoad
in the linked post...
– Stéphane Laurent
Jan 3 at 14:39
Volokh:see here for an example ofonLoad
.
– Stéphane Laurent
Jan 3 at 14:43
Thank you for your input. Indeed there was some helpful information in the question you linked, however there are still some difficulties. I use an R package with Rcpp and it automatically generates a fileRcppExports.cpp
(generated byRcpp::compileAttributes()
) that includes references to functions contained in the precompiled .dll file. Unfortunately, as soon as this file is generated by building the package, a furtherdevtools::check()
gives an error:RcppExports.o:RcppExports.cpp:(.rdata+0x760): undefined reference to dll_func.
Is there any way around this?
– Volokh
Jan 3 at 15:06
add a comment |
I would like to create an R package that contains a precompiled .dll/.so file. It is unclear to me where to put the file in the package structure (e.g. in the folder inst?) and how to load it -- e.g. what lines do I need to add to other files that allow the .dll or .so to be loaded and functions contained in it to be used.
In particular, I would like to see some examples for the use of dyn.load()
, .C()
and library.dynam()
.
In a normal script that is not a package, I would load the dll via
dyn.load("path/to/my_dll.dll")
and then call specific functions contained in that .dll by using
.C("dll_func", input)
However, this seems to be different when trying to convert my script into a package.
Also, do I need .onLoad
and how do I use it correctly?
r dll r-package
I would like to create an R package that contains a precompiled .dll/.so file. It is unclear to me where to put the file in the package structure (e.g. in the folder inst?) and how to load it -- e.g. what lines do I need to add to other files that allow the .dll or .so to be loaded and functions contained in it to be used.
In particular, I would like to see some examples for the use of dyn.load()
, .C()
and library.dynam()
.
In a normal script that is not a package, I would load the dll via
dyn.load("path/to/my_dll.dll")
and then call specific functions contained in that .dll by using
.C("dll_func", input)
However, this seems to be different when trying to convert my script into a package.
Also, do I need .onLoad
and how do I use it correctly?
r dll r-package
r dll r-package
asked Jan 3 at 12:51
VolokhVolokh
1279
1279
3
Possible duplicate of How to load compiled library in an R package. tl;dr : putmy_dll.dll
ininst/lib/
and trydyn.load(system.file("lib/my_dll.dll", package=<mypkg>))
– duckmayr
Jan 3 at 13:50
Nothing about theonLoad
in the linked post...
– Stéphane Laurent
Jan 3 at 14:39
Volokh:see here for an example ofonLoad
.
– Stéphane Laurent
Jan 3 at 14:43
Thank you for your input. Indeed there was some helpful information in the question you linked, however there are still some difficulties. I use an R package with Rcpp and it automatically generates a fileRcppExports.cpp
(generated byRcpp::compileAttributes()
) that includes references to functions contained in the precompiled .dll file. Unfortunately, as soon as this file is generated by building the package, a furtherdevtools::check()
gives an error:RcppExports.o:RcppExports.cpp:(.rdata+0x760): undefined reference to dll_func.
Is there any way around this?
– Volokh
Jan 3 at 15:06
add a comment |
3
Possible duplicate of How to load compiled library in an R package. tl;dr : putmy_dll.dll
ininst/lib/
and trydyn.load(system.file("lib/my_dll.dll", package=<mypkg>))
– duckmayr
Jan 3 at 13:50
Nothing about theonLoad
in the linked post...
– Stéphane Laurent
Jan 3 at 14:39
Volokh:see here for an example ofonLoad
.
– Stéphane Laurent
Jan 3 at 14:43
Thank you for your input. Indeed there was some helpful information in the question you linked, however there are still some difficulties. I use an R package with Rcpp and it automatically generates a fileRcppExports.cpp
(generated byRcpp::compileAttributes()
) that includes references to functions contained in the precompiled .dll file. Unfortunately, as soon as this file is generated by building the package, a furtherdevtools::check()
gives an error:RcppExports.o:RcppExports.cpp:(.rdata+0x760): undefined reference to dll_func.
Is there any way around this?
– Volokh
Jan 3 at 15:06
3
3
Possible duplicate of How to load compiled library in an R package. tl;dr : put
my_dll.dll
in inst/lib/
and try dyn.load(system.file("lib/my_dll.dll", package=<mypkg>))
– duckmayr
Jan 3 at 13:50
Possible duplicate of How to load compiled library in an R package. tl;dr : put
my_dll.dll
in inst/lib/
and try dyn.load(system.file("lib/my_dll.dll", package=<mypkg>))
– duckmayr
Jan 3 at 13:50
Nothing about the
onLoad
in the linked post...– Stéphane Laurent
Jan 3 at 14:39
Nothing about the
onLoad
in the linked post...– Stéphane Laurent
Jan 3 at 14:39
Volokh:see here for an example of
onLoad
.– Stéphane Laurent
Jan 3 at 14:43
Volokh:see here for an example of
onLoad
.– Stéphane Laurent
Jan 3 at 14:43
Thank you for your input. Indeed there was some helpful information in the question you linked, however there are still some difficulties. I use an R package with Rcpp and it automatically generates a file
RcppExports.cpp
(generated by Rcpp::compileAttributes()
) that includes references to functions contained in the precompiled .dll file. Unfortunately, as soon as this file is generated by building the package, a further devtools::check()
gives an error: RcppExports.o:RcppExports.cpp:(.rdata+0x760): undefined reference to dll_func.
Is there any way around this?– Volokh
Jan 3 at 15:06
Thank you for your input. Indeed there was some helpful information in the question you linked, however there are still some difficulties. I use an R package with Rcpp and it automatically generates a file
RcppExports.cpp
(generated by Rcpp::compileAttributes()
) that includes references to functions contained in the precompiled .dll file. Unfortunately, as soon as this file is generated by building the package, a further devtools::check()
gives an error: RcppExports.o:RcppExports.cpp:(.rdata+0x760): undefined reference to dll_func.
Is there any way around this?– Volokh
Jan 3 at 15:06
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54022682%2finclude-and-use-precompiled-dll-so-in-r-package%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54022682%2finclude-and-use-precompiled-dll-so-in-r-package%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
Possible duplicate of How to load compiled library in an R package. tl;dr : put
my_dll.dll
ininst/lib/
and trydyn.load(system.file("lib/my_dll.dll", package=<mypkg>))
– duckmayr
Jan 3 at 13:50
Nothing about the
onLoad
in the linked post...– Stéphane Laurent
Jan 3 at 14:39
Volokh:see here for an example of
onLoad
.– Stéphane Laurent
Jan 3 at 14:43
Thank you for your input. Indeed there was some helpful information in the question you linked, however there are still some difficulties. I use an R package with Rcpp and it automatically generates a file
RcppExports.cpp
(generated byRcpp::compileAttributes()
) that includes references to functions contained in the precompiled .dll file. Unfortunately, as soon as this file is generated by building the package, a furtherdevtools::check()
gives an error:RcppExports.o:RcppExports.cpp:(.rdata+0x760): undefined reference to dll_func.
Is there any way around this?– Volokh
Jan 3 at 15:06