Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [Solved] Can I read the info inside a *.dll and build it dynamically?
Forum Updated to NodeBB v4.3 + New Features

[Solved] Can I read the info inside a *.dll and build it dynamically?

Scheduled Pinned Locked Moved General and Desktop
13 Posts 4 Posters 2.9k Views 2 Watching
  • 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.
  • SGaistS SGaist

    Hi,

    What do you need to read from it ?

    Something's a bit mixed up, are you referring to linux's shared libraries (*.so files) or do you really want to read a windows DLL ?

    ? Offline
    ? Offline
    A Former User
    wrote on last edited by A Former User
    #4

    @SGaist said:

    Hi,

    What do you need to read from it ?

    Something's a bit mixed up, are you referring to linux's shared libraries (*.so files) or do you really want to read a windows DLL ?

    *.so files are generated by Unix-like operating systems that use ELF like GNU. Linux is just a kernel.

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #5

      Are you binary reading these information from the DLL ?

      If you are expected to use that DLL on Fedora (or any other linux distro) then they will have to build it for it.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      R 1 Reply Last reply
      0
      • SGaistS SGaist

        Are you binary reading these information from the DLL ?

        If you are expected to use that DLL on Fedora (or any other linux distro) then they will have to build it for it.

        R Offline
        R Offline
        roseicollis
        wrote on last edited by roseicollis
        #6

        @SGaist I don't know how should I read it... in the case of the windows app it uses a delphi function to load the dll and does something like creating a pointer so you can access the functions inside the dll that returns the array of values I need

        I've copied the .dll file I need into my unix system and tried this code:

            QLibrary *myLibrary= new QLibrary();
            myLibrary->setFileName("/home/user/wk/folder1/Project/Resources/TheLibrary.dll");
            myLibrary->load();
            qDebug() << "myLibrary.filename" << myLibrary->fileName(); // returns  "/home/user/wk/folder1/Project/Resources/TheLibrary.dll"
            qDebug() << "myLibrary.load" <<  myLibrary->load(); // returns false
            qDebug() << "myLibrary.isLoaded" << myLibrary->isLoaded(); // returns false
            qDebug() << " qerrorstring! " << myLibrary->errorString(); // returns invalid ELF header
        

        So maybe I can read the *.dll this way but I still don't know how to deal with the errorString I got...

        1 Reply Last reply
        0
        • M Offline
          M Offline
          Meyer Sound
          wrote on last edited by
          #7

          QLibrary can only be used to access dynamic libraries built for the OS you are running on. So, you can't open a Windows DLL on a Unix machine.

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #8

            Just one thing… Since this library is built for you, why do you need to do it like that ? Can't you just link against it ? Or is it some kind of plugin ?

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            R 1 Reply Last reply
            0
            • SGaistS SGaist

              Just one thing… Since this library is built for you, why do you need to do it like that ? Can't you just link against it ? Or is it some kind of plugin ?

              R Offline
              R Offline
              roseicollis
              wrote on last edited by
              #9

              @SGaist Well it is not built for me, its for another program in windows but they wanted to re-use it if possible with my program and avoid having to change it for me.

              @Meyer-Sound ohh... then I understood bad how QLibrary works. Thank you!

              1 Reply Last reply
              0
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #10

                Unless I misunderstood you, that library is built in-house even if it's from another department, right ?

                If so, why don't they provide you with the corresponding header and lib file so you can just use that library like any other ?

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                R 1 Reply Last reply
                0
                • SGaistS SGaist

                  Unless I misunderstood you, that library is built in-house even if it's from another department, right ?

                  If so, why don't they provide you with the corresponding header and lib file so you can just use that library like any other ?

                  R Offline
                  R Offline
                  roseicollis
                  wrote on last edited by
                  #11

                  @SGaist yes that's it, but they wanted to avoid that if I could load it so first I "break my neck" with the problem. I've talk with them seeing that its totally impossible and I'm going to do it in another way for the moment.

                  Thank you so much for your help!

                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #12

                    They will still have to build it for your OS. In any case you can take some inspiration from the OpenSSL code in Qt, they use the adequate method on each platform to use the DLL at runtime (unless you built Qt with OpenSSL linked)

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    R 1 Reply Last reply
                    1
                    • SGaistS SGaist

                      They will still have to build it for your OS. In any case you can take some inspiration from the OpenSSL code in Qt, they use the adequate method on each platform to use the DLL at runtime (unless you built Qt with OpenSSL linked)

                      R Offline
                      R Offline
                      roseicollis
                      wrote on last edited by
                      #13

                      @SGaist Nice! I'll keep it in mind. Thank you so much SGaist

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved