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;








2















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?










share|improve this question




























    2















    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?










    share|improve this question
























      2












      2








      2








      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?










      share|improve this question














      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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Feb 12 at 19:53









      fo_x86fo_x86

      1,50411837




      1,50411837






















          1 Answer
          1






          active

          oldest

          votes


















          0














          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






          share|improve this answer























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









            0














            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






            share|improve this answer



























              0














              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






              share|improve this answer

























                0












                0








                0







                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






                share|improve this answer













                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







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Mar 8 at 13:39









                eacousineaueacousineau

                2,33412232




                2,33412232





























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





















































                    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

                    Save data to MySQL database using ExtJS and PHP [closed]2019 Community Moderator ElectionHow can I prevent SQL injection in PHP?Which MySQL data type to use for storing boolean valuesPHP: Delete an element from an arrayHow do I connect to a MySQL Database in Python?Should I use the datetime or timestamp data type in MySQL?How to get a list of MySQL user accountsHow Do You Parse and Process HTML/XML in PHP?Reference — What does this symbol mean in PHP?How does PHP 'foreach' actually work?Why shouldn't I use mysql_* functions in PHP?

                    Compiling GNU Global with universal-ctags support Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!Tags for Emacs: Relationship between etags, ebrowse, cscope, GNU Global and exuberant ctagsVim and Ctags tips and trickscscope or ctags why choose one over the other?scons and ctagsctags cannot open option file “.ctags”Adding tag scopes in universal-ctagsShould I use Universal-ctags?Universal ctags on WindowsHow do I install GNU Global with universal ctags support using Homebrew?Universal ctags with emacsHow to highlight ctags generated by Universal Ctags in Vim?

                    Add ONERROR event to image from jsp tldHow to add an image to a JPanel?Saving image from PHP URLHTML img scalingCheck if an image is loaded (no errors) with jQueryHow to force an <img> to take up width, even if the image is not loadedHow do I populate hidden form field with a value set in Spring ControllerStyling Raw elements Generated from JSP tagds with Jquery MobileLimit resizing of images with explicitly set width and height attributeserror TLD use in a jsp fileJsp tld files cannot be resolved