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;
}







0















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?










share|improve this question


















  • 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













  • 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 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




















0















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?










share|improve this question


















  • 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













  • 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 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
















0












0








0








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?










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 3 at 12:51









VolokhVolokh

1279




1279








  • 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













  • 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 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
















  • 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













  • 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 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










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














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
});


}
});














draft saved

draft discarded


















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
















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

Does disintegrating a polymorphed enemy still kill it after the 2018 errata?

A Topological Invariant for $pi_3(U(n))$