Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. inside lib and dll

inside lib and dll

Scheduled Pinned Locked Moved C / C++ / MFC
learning
12 Posts 5 Posters 1 Views 1 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.
  • P pc_dev

    Is there a way that we can know all exposed functions and their signatures and exposed data items which dlls and lib files expose, if we donot have any documentation about them, something like resource hacker.

    S Offline
    S Offline
    Sarath C
    wrote on last edited by
    #3

    You can use DumpBin[^] utility provided by Microsoft. This is console based application You can use "Dependency Walker" which is provided with Visual Studio tools for the same purpose. SaRath.
    "Don't Do Different things... Do Things Differently..." Understanding State Pattern in C++

    1 Reply Last reply
    0
    • P pc_dev

      Is there a way that we can know all exposed functions and their signatures and exposed data items which dlls and lib files expose, if we donot have any documentation about them, something like resource hacker.

      D Offline
      D Offline
      David Crow
      wrote on last edited by
      #4

      While dumpbin and depends can show the export table, they will not show you the function signatures.


      "The largest fire starts but with the smallest spark." - David Crow

      "Judge not by the eye but by the heart." - Native American Proverb

      M 1 Reply Last reply
      0
      • D David Crow

        While dumpbin and depends can show the export table, they will not show you the function signatures.


        "The largest fire starts but with the smallest spark." - David Crow

        "Judge not by the eye but by the heart." - Native American Proverb

        M Offline
        M Offline
        Michael Dunn
        wrote on last edited by
        #5

        If functions are exported as mangled C++ names, Depends can translate those into C++ prototypes.

        --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ

        D 1 Reply Last reply
        0
        • M Michael Dunn

          If functions are exported as mangled C++ names, Depends can translate those into C++ prototypes.

          --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ

          D Offline
          D Offline
          David Crow
          wrote on last edited by
          #6

          Michael Dunn wrote:

          ...Depends can translate those into C++ prototypes.

          Return type and argument list included?


          "The largest fire starts but with the smallest spark." - David Crow

          "Judge not by the eye but by the heart." - Native American Proverb

          M 1 Reply Last reply
          0
          • D David Crow

            Michael Dunn wrote:

            ...Depends can translate those into C++ prototypes.

            Return type and argument list included?


            "The largest fire starts but with the smallest spark." - David Crow

            "Judge not by the eye but by the heart." - Native American Proverb

            M Offline
            M Offline
            Michael Dunn
            wrote on last edited by
            #7

            Yes, because all that info is encoded into the mangled name. For example: ?ConcatInPlace@CString@WTL@@IAEXHPBD@Z becomes: protected: void __thiscall WTL::CString::ConcatInPlace(int,char const *)

            --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ

            D 1 Reply Last reply
            0
            • M Michael Dunn

              Yes, because all that info is encoded into the mangled name. For example: ?ConcatInPlace@CString@WTL@@IAEXHPBD@Z becomes: protected: void __thiscall WTL::CString::ConcatInPlace(int,char const *)

              --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ

              D Offline
              D Offline
              David Crow
              wrote on last edited by
              #8

              What DLL is that contained in?


              "The largest fire starts but with the smallest spark." - David Crow

              "Judge not by the eye but by the heart." - Native American Proverb

              M 1 Reply Last reply
              0
              • D David Crow

                What DLL is that contained in?


                "The largest fire starts but with the smallest spark." - David Crow

                "Judge not by the eye but by the heart." - Native American Proverb

                M Offline
                M Offline
                Michael Dunn
                wrote on last edited by
                #9

                I just pulled that from a MAP file of one of my apps. I was just demonstrating that the mangled name contains all the info necesary to convert it to a C++ prototype.

                --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ

                D 1 Reply Last reply
                0
                • M Michael Dunn

                  I just pulled that from a MAP file of one of my apps. I was just demonstrating that the mangled name contains all the info necesary to convert it to a C++ prototype.

                  --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ

                  D Offline
                  D Offline
                  David Crow
                  wrote on last edited by
                  #10

                  So does Depends also use said .map file, or how does it generate the function's signature?


                  "The largest fire starts but with the smallest spark." - David Crow

                  "Judge not by the eye but by the heart." - Native American Proverb

                  M 1 Reply Last reply
                  0
                  • D David Crow

                    So does Depends also use said .map file, or how does it generate the function's signature?


                    "The largest fire starts but with the smallest spark." - David Crow

                    "Judge not by the eye but by the heart." - Native American Proverb

                    M Offline
                    M Offline
                    Michael Dunn
                    wrote on last edited by
                    #11

                    It's all encoded in the mangled name. You can see for yourself using the undname tool in the PSDK:

                    F:\>undname -f ?ConcatInPlace@CString@WTL@@IAEXHPBD@Z
                    Microsoft(R) Windows NT(R) Operating System
                    UNDNAME Version 5.00.1768.1Copyright (C) Microsoft Corp. 1981-1998

                    ?ConcatInPlace@CString@WTL@@IAEXHPBD@Z == protected: void __thiscall WTL::CString::ConcatInPlace(int,char const *)

                    --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ

                    D 1 Reply Last reply
                    0
                    • M Michael Dunn

                      It's all encoded in the mangled name. You can see for yourself using the undname tool in the PSDK:

                      F:\>undname -f ?ConcatInPlace@CString@WTL@@IAEXHPBD@Z
                      Microsoft(R) Windows NT(R) Operating System
                      UNDNAME Version 5.00.1768.1Copyright (C) Microsoft Corp. 1981-1998

                      ?ConcatInPlace@CString@WTL@@IAEXHPBD@Z == protected: void __thiscall WTL::CString::ConcatInPlace(int,char const *)

                      --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ

                      D Offline
                      D Offline
                      David Crow
                      wrote on last edited by
                      #12

                      Thanks Mike, but that's undname, not Depends.


                      "The largest fire starts but with the smallest spark." - David Crow

                      "Judge not by the eye but by the heart." - Native American Proverb

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups