difference between *.so file created by pybind and regular linux dynamic libs The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceWhat is the difference between @staticmethod and @classmethod?Difference between append vs. extend list methods in PythonHow to return multiple values from a function?What's the difference between lists and tuples?Difference between __str__ and __repr__?What are the differences between type() and isinstance()?What is the difference between .py and .pyc files?Importing files from different folderMeaning of @classmethod and @staticmethod for beginner?Python vs Cpython
Can withdrawing asylum be illegal?
How did the audience guess the pentatonic scale in Bobby McFerrin's presentation?
Is above average number of years spent on PhD considered a red flag in future academia or industry positions?
How can I protect witches in combat who wear limited clothing?
What are these Gizmos at Izaña Atmospheric Research Center in Spain?
What is this lever in Argentinian toilets?
Road tyres vs "Street" tyres for charity ride on MTB Tandem
How do you keep chess fun when your opponent constantly beats you?
Match Roman Numerals
How to politely respond to generic emails requesting a PhD/job in my lab? Without wasting too much time
Working through the single responsibility principle (SRP) in Python when calls are expensive
Why is the object placed in the middle of the sentence here?
How to split my screen on my Macbook Air?
Cooking pasta in a water boiler
How can I define good in a religion that claims no moral authority?
Can a novice safely splice in wire to lengthen 5V charging cable?
How are presidential pardons supposed to be used?
ELI5: Why do they say that Israel would have been the fourth country to land a spacecraft on the Moon and why do they call it low cost?
Keeping a retro style to sci-fi spaceships?
Mortgage adviser recommends a longer term than necessary combined with overpayments
How does ice melt when immersed in water?
What information about me do stores get via my credit card?
Why does the Event Horizon Telescope (EHT) not include telescopes from Africa, Asia or Australia?
Can the prologue be the backstory of your main character?
difference between *.so file created by pybind and regular linux dynamic libs
The 2019 Stack Overflow Developer Survey Results Are In
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
The Ask Question Wizard is Live!
Data science time! April 2019 and salary with experienceWhat is the difference between @staticmethod and @classmethod?Difference between append vs. extend list methods in PythonHow to return multiple values from a function?What's the difference between lists and tuples?Difference between __str__ and __repr__?What are the differences between type() and isinstance()?What is the difference between .py and .pyc files?Importing files from different folderMeaning of @classmethod and @staticmethod for beginner?Python vs Cpython
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
When one uses pybind to create python-c++ bindings, upon compilation pybind creates a *.so
file. AFAIK the compilation step in pybind just uses the c++ compiler, so this should be no different from just regular shared libs that one would create for a normal c++ code. How does the python interpreter introspect into these *.so
files to notice that there are python-compatible modules in them?
python pybind11
add a comment |
When one uses pybind to create python-c++ bindings, upon compilation pybind creates a *.so
file. AFAIK the compilation step in pybind just uses the c++ compiler, so this should be no different from just regular shared libs that one would create for a normal c++ code. How does the python interpreter introspect into these *.so
files to notice that there are python-compatible modules in them?
python pybind11
add a comment |
When one uses pybind to create python-c++ bindings, upon compilation pybind creates a *.so
file. AFAIK the compilation step in pybind just uses the c++ compiler, so this should be no different from just regular shared libs that one would create for a normal c++ code. How does the python interpreter introspect into these *.so
files to notice that there are python-compatible modules in them?
python pybind11
When one uses pybind to create python-c++ bindings, upon compilation pybind creates a *.so
file. AFAIK the compilation step in pybind just uses the c++ compiler, so this should be no different from just regular shared libs that one would create for a normal c++ code. How does the python interpreter introspect into these *.so
files to notice that there are python-compatible modules in them?
python pybind11
python pybind11
asked Feb 12 at 19:53
fo_x86fo_x86
1,50411837
1,50411837
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Ultimately, you'll want to look at the CPython docs for how C extensions work. From the docs: https://docs.python.org/3/extending/building.html
A C extension for CPython is a shared library (e.g. a .so file on Linux, .pyd on Windows), which exports an initialization function.
As it says here, the primary difference is that it defines its initialization / entry point function.
All pybind
does is wrap this entry point via PYBIND11_MODULE
:
https://pybind11.readthedocs.io/en/stable/basics.html#creating-bindings-for-a-simple-function
https://github.com/pybind/pybind11/blob/25abf7e/include/pybind11/detail/common.h#L283
add a comment |
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%2f54657732%2fdifference-between-so-file-created-by-pybind-and-regular-linux-dynamic-libs%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Ultimately, you'll want to look at the CPython docs for how C extensions work. From the docs: https://docs.python.org/3/extending/building.html
A C extension for CPython is a shared library (e.g. a .so file on Linux, .pyd on Windows), which exports an initialization function.
As it says here, the primary difference is that it defines its initialization / entry point function.
All pybind
does is wrap this entry point via PYBIND11_MODULE
:
https://pybind11.readthedocs.io/en/stable/basics.html#creating-bindings-for-a-simple-function
https://github.com/pybind/pybind11/blob/25abf7e/include/pybind11/detail/common.h#L283
add a comment |
Ultimately, you'll want to look at the CPython docs for how C extensions work. From the docs: https://docs.python.org/3/extending/building.html
A C extension for CPython is a shared library (e.g. a .so file on Linux, .pyd on Windows), which exports an initialization function.
As it says here, the primary difference is that it defines its initialization / entry point function.
All pybind
does is wrap this entry point via PYBIND11_MODULE
:
https://pybind11.readthedocs.io/en/stable/basics.html#creating-bindings-for-a-simple-function
https://github.com/pybind/pybind11/blob/25abf7e/include/pybind11/detail/common.h#L283
add a comment |
Ultimately, you'll want to look at the CPython docs for how C extensions work. From the docs: https://docs.python.org/3/extending/building.html
A C extension for CPython is a shared library (e.g. a .so file on Linux, .pyd on Windows), which exports an initialization function.
As it says here, the primary difference is that it defines its initialization / entry point function.
All pybind
does is wrap this entry point via PYBIND11_MODULE
:
https://pybind11.readthedocs.io/en/stable/basics.html#creating-bindings-for-a-simple-function
https://github.com/pybind/pybind11/blob/25abf7e/include/pybind11/detail/common.h#L283
Ultimately, you'll want to look at the CPython docs for how C extensions work. From the docs: https://docs.python.org/3/extending/building.html
A C extension for CPython is a shared library (e.g. a .so file on Linux, .pyd on Windows), which exports an initialization function.
As it says here, the primary difference is that it defines its initialization / entry point function.
All pybind
does is wrap this entry point via PYBIND11_MODULE
:
https://pybind11.readthedocs.io/en/stable/basics.html#creating-bindings-for-a-simple-function
https://github.com/pybind/pybind11/blob/25abf7e/include/pybind11/detail/common.h#L283
answered Mar 8 at 13:39
eacousineaueacousineau
2,33412232
2,33412232
add a comment |
add a comment |
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%2f54657732%2fdifference-between-so-file-created-by-pybind-and-regular-linux-dynamic-libs%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