Community
    • Login

    Python plugin works in NPP 7.7 but does work in NPP 7.8 upward

    Scheduled Pinned Locked Moved Notepad++ & Plugin Development
    24 Posts 2 Posters 5.9k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Stier HahnS Offline
      Stier Hahn
      last edited by

      Dear community,

      I need some help regarding supporting of my Python plugin.

      https://github.com/stier08/NppPyStandalone

      In a nutshell it allows calling scripts written in python directly from NPP IDE .

      The latest version linked against winpython 3.7 / boost 1.68 / vs toolset v140 works fine with npp.7.7.1.bin

      However, starting from NPP 7.8 upward I’m getting an error “<plugin> is not compatible with current version of notepad++.”

      Apparently something has changes in NPP and I cant figure out what exactly…

      To troubleshoot the problem I built a bare minimal Plugin ( based on https://github.com/npp-plugins/plugindemo

      by linking it with boost::python

      #include <boost/python/module.hpp>
      #include <boost/python/class.hpp>
      #include <boost/utility.hpp>

      without calling any python stuff.

      and even such a small change cases loading error in NPP 7.9.

      NPP 7.7 works fine.

      Can someone suggest what is the root cause / what need to changes / how to troubleshoot this.

      Thank you in advance,
      stier08.

      EkopalypseE 1 Reply Last reply Reply Quote 2
      • EkopalypseE Offline
        Ekopalypse @Stier Hahn
        last edited by Ekopalypse

        @Stier-Hahn

        How do you compile the dll? Using Visual Studio, gcc …? Which version?

        Are the exports really exported? Using dumpbin like dumpbin /exports YOUR_PLUGIN.dll will give you that information.

        Stier HahnS 1 Reply Last reply Reply Quote 0
        • EkopalypseE Offline
          Ekopalypse
          last edited by

          @Stier-Hahn said in Python plugin works in NPP 7.7 but does work in NPP 7.8 upward:

          NPP 7.7 works fine.

          Does that mean, the same, recently compiled dll, works here but not with 7.9.X??

          Stier HahnS 1 Reply Last reply Reply Quote 0
          • Stier HahnS Offline
            Stier Hahn @Ekopalypse
            last edited by

            @Ekopalypse thank you for your feedback.
            I’ve created a minimal binary that works with 7.7 and does not work with 7.8

            https://github.com/stier08/NppPyStandalone/releases/tag/NppPluginTemplate_minimal_boost-1_68_0_vs2019_toolset_v140_wp37_01

            Source code https://github.com/stier08/NppPyStandalone/tree/minimal_boost-1_68_0_vs2019_toolset_v140_wp37

            My setup is as follows

            boost-1_68_0
            vs2019
            toolset v140
            wp37 (Winpython32-3.7.7.1dot)

            Plugin does work with
            https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v7.7.1/npp.7.7.1.bin.7z

            but does not work with

            https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v7.8/npp.7.8.bin.7z

            1 Reply Last reply Reply Quote 0
            • Stier HahnS Offline
              Stier Hahn @Ekopalypse
              last edited by Stier Hahn

              @Ekopalypse said in Python plugin works in NPP 7.7 but does work in NPP 7.8 upward:

              /exports

              see my previous post on build setup

              here is what I get with dumpin

              Microsoft ® COFF/PE Dumper Version 14.28.29336.0
              Copyright © Microsoft Corporation. All rights reserved.

              Dump of file NppPluginTemplate.dll

              File Type: DLL

              Section contains the following exports for NppPluginTemplate.dll

              00000000 characteristics
              6013057D time date stamp Thu Jan 28 19:42:05 2021
                  0.00 version
                     1 ordinal base
                     6 number of functions
                     6 number of names
              
              ordinal hint RVA      name
              
                    1    0 000010E0 beNotified
                    2    1 000010C0 getFuncsArray
                    3    2 000010B0 getName
                    4    3 000010F0 isUnicode
                    5    4 000010F0 messageProc
                    6    5 00001040 setInfo
              

              Summary

                  2000 .data
                  1000 .gfids
                  6000 .rdata
                  1000 .reloc
                  1000 .rsrc
                  D000 .text
              
              1 Reply Last reply Reply Quote 0
              • EkopalypseE Offline
                Ekopalypse
                last edited by

                Let me do some tests with your code and the mentioned npp versions.

                1 Reply Last reply Reply Quote 0
                • EkopalypseE Offline
                  Ekopalypse
                  last edited by

                  Works for me

                  8b16aa0a-e0b6-4f72-ba92-e5895457c5aa-image.png

                  Where is your python3.dll located in 7.8?
                  Should be within your plugin directory.

                  Stier HahnS 1 Reply Last reply Reply Quote 2
                  • Stier HahnS Offline
                    Stier Hahn @Ekopalypse
                    last edited by

                    @Ekopalypse i’ve bin using same setup. I.e. only plugin dll is located in plugin dir. And python dir in path.

                    EkopalypseE 1 Reply Last reply Reply Quote 2
                    • EkopalypseE Offline
                      Ekopalypse @Stier Hahn
                      last edited by

                      @Stier-Hahn
                      and there is no other python3 dll (64bit) in the path before the 32bit one?

                      Stier HahnS 1 Reply Last reply Reply Quote 0
                      • Stier HahnS Offline
                        Stier Hahn @Ekopalypse
                        last edited by Stier Hahn

                        @Ekopalypse will check tmr in more details.

                        I can tell for sure (99%) I do not have any 64 bit builds of python on my box.

                        Ps
                        I’m still wondering that it works for me in 7.7 but not in 7.8. Just for my understanding were there any changes that could cause such behavior? Changes in dll lookup order or something

                        1 Reply Last reply Reply Quote 0
                        • EkopalypseE Offline
                          Ekopalypse
                          last edited by

                          Starting from 7.8 plugins are allowed to load their own dlls from within the plugin directory.

                          1 Reply Last reply Reply Quote 2
                          • EkopalypseE Offline
                            Ekopalypse
                            last edited by

                            Ah - could it be that path is not evaluted anymore? I guess so.

                            Stier HahnS 1 Reply Last reply Reply Quote 1
                            • Stier HahnS Offline
                              Stier Hahn @Ekopalypse
                              last edited by

                              @Ekopalypse could you please check if it works for you if python dll is located in path and not in plugin dir

                              EkopalypseE 2 Replies Last reply Reply Quote 0
                              • EkopalypseE Offline
                                Ekopalypse @Stier Hahn
                                last edited by

                                @Stier-Hahn - currently trying

                                EkopalypseE 1 Reply Last reply Reply Quote 0
                                • EkopalypseE Offline
                                  Ekopalypse @Ekopalypse
                                  last edited by Ekopalypse

                                  @Stier-Hahn
                                  Yes, it is not found but then I do get

                                  6925989c-f96a-49a9-bc06-d9fe35ba80a0-image.png

                                  1 Reply Last reply Reply Quote 1
                                  • EkopalypseE Offline
                                    Ekopalypse
                                    last edited by

                                    and next window is
                                    81824459-8282-4997-9a08-23912af2543b-image.png

                                    1 Reply Last reply Reply Quote 0
                                    • EkopalypseE Offline
                                      Ekopalypse
                                      last edited by

                                      but npp 7.7 works.

                                      1 Reply Last reply Reply Quote 1
                                      • EkopalypseE Offline
                                        Ekopalypse @Stier Hahn
                                        last edited by

                                        @Stier-Hahn

                                        I start to remember that I read some conversation about
                                        security concerns regarding sideloading dlls.

                                        Stier HahnS 1 Reply Last reply Reply Quote 1
                                        • Stier HahnS Offline
                                          Stier Hahn @Ekopalypse
                                          last edited by

                                          @Ekopalypse so, I’ve tested my minimal plugin build in 7.8 with python37.dll inside plugin dir and it works.

                                          My question from the top of the thread has been solved.

                                          Thank you very much!

                                          ps

                                          I still need to check if my main plugin will be working…
                                          Struggling to upgrade third-party libs and other dependencies…

                                          1 Reply Last reply Reply Quote 2
                                          • EkopalypseE Offline
                                            Ekopalypse
                                            last edited by

                                            If there is anything we can do to help let us know.

                                            Stier HahnS 1 Reply Last reply Reply Quote 0

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • First post
                                              Last post
                                            The Community of users of the Notepad++ text editor.
                                            Powered by NodeBB | Contributors