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. LNK2005 Error: basic_string already defined

LNK2005 Error: basic_string already defined

Scheduled Pinned Locked Moved C / C++ / MFC
csharpc++visual-studiohelpannouncement
14 Posts 2 Posters 0 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.
  • S Stuart Dootson

    WendyS56 wrote:

    In the exports table the functions (e.g. resize) that the linker complains about are external and prefixed with __imp_. Is this why the linker is complaining?

    No - that's correct linkage to a function defined in a DLL.

    WendyS56 wrote:

    What is the difference between these two?

    The first replaces std_string by string and relies on the using (not #using, I believe) statement to make string resolve to std::string. The second just replaces std_string by std::string. BTW - can you post the exact text of the LNK2005 message?

    Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

    S Offline
    S Offline
    SkysTheLimit
    wrote on last edited by
    #5

    Here are a few of the linker errors (ciwsgif is my application): msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct>,class std::allocator >::basic_string<char,struct>,class std::allocator >(void)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in ciwsgif.obj msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct>,class std::allocator >::basic_string<char,struct>,class std::allocator >(class std::basic_string<char,struct>,class std::allocator > const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z) already defined in ciwsgif.obj msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct>,class std::allocator >::basic_string<char,struct>,class std::allocator >(char const *)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z) already defined in ciwsgif.obj

    S 1 Reply Last reply
    0
    • S SkysTheLimit

      Here are a few of the linker errors (ciwsgif is my application): msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct>,class std::allocator >::basic_string<char,struct>,class std::allocator >(void)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in ciwsgif.obj msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct>,class std::allocator >::basic_string<char,struct>,class std::allocator >(class std::basic_string<char,struct>,class std::allocator > const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z) already defined in ciwsgif.obj msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct>,class std::allocator >::basic_string<char,struct>,class std::allocator >(char const *)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z) already defined in ciwsgif.obj

      S Offline
      S Offline
      Stuart Dootson
      wrote on last edited by
      #6

      WendyS56 wrote:

      already defined in ciwsgif.obj

      I'm presuming ciwsgif.cpp is in one of your libraries?

      Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

      S 1 Reply Last reply
      0
      • S Stuart Dootson

        WendyS56 wrote:

        already defined in ciwsgif.obj

        I'm presuming ciwsgif.cpp is in one of your libraries?

        Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

        S Offline
        S Offline
        SkysTheLimit
        wrote on last edited by
        #7

        Yes, ciwsgif is my main application file which uses the 4 libraries. It includes , and along with some header files corresponding to the 4 libraries.

        S 1 Reply Last reply
        0
        • S SkysTheLimit

          Yes, ciwsgif is my main application file which uses the 4 libraries. It includes , and along with some header files corresponding to the 4 libraries.

          S Offline
          S Offline
          Stuart Dootson
          wrote on last edited by
          #8

          Well...that's where the conflicting definitions are coming from

          Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

          S 1 Reply Last reply
          0
          • S Stuart Dootson

            Well...that's where the conflicting definitions are coming from

            Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

            S Offline
            S Offline
            SkysTheLimit
            wrote on last edited by
            #9

            Do you mean if my application includes "string.h" and some other library header files include "string" or "CString" then there would be a conflict? Or is it because there are multiple includes of the same header file (i.e. string.h)?

            S 1 Reply Last reply
            0
            • S SkysTheLimit

              Do you mean if my application includes "string.h" and some other library header files include "string" or "CString" then there would be a conflict? Or is it because there are multiple includes of the same header file (i.e. string.h)?

              S Offline
              S Offline
              Stuart Dootson
              wrote on last edited by
              #10

              WendyS56 wrote:

              Do you mean if my application includes "string.h" and some other library header files include "string" or "CString" then there would be a conflict? Or is it because there are multiple includes of the same header file (i.e. string.h)?

              No - multiple includes shouldn't do that. What that message is saying is that your main object contains definitions for the string methods. I'm not sure why, but that's what the message is saying.

              Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

              S 1 Reply Last reply
              0
              • S Stuart Dootson

                WendyS56 wrote:

                Do you mean if my application includes "string.h" and some other library header files include "string" or "CString" then there would be a conflict? Or is it because there are multiple includes of the same header file (i.e. string.h)?

                No - multiple includes shouldn't do that. What that message is saying is that your main object contains definitions for the string methods. I'm not sure why, but that's what the message is saying.

                Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                S Offline
                S Offline
                SkysTheLimit
                wrote on last edited by
                #11

                Thank you for clarifying things for me :) When running dumpbin and looking at all the EXPORTS, basic_string is EXPORT'ed from lib4. I understand that to mean that these functions are made available by that library. Am I correct? Would it make a difference to dynamically link my application to the libraries rather than statically linking to the .libs?

                S 1 Reply Last reply
                0
                • S SkysTheLimit

                  Thank you for clarifying things for me :) When running dumpbin and looking at all the EXPORTS, basic_string is EXPORT'ed from lib4. I understand that to mean that these functions are made available by that library. Am I correct? Would it make a difference to dynamically link my application to the libraries rather than statically linking to the .libs?

                  S Offline
                  S Offline
                  Stuart Dootson
                  wrote on last edited by
                  #12

                  WendyS56 wrote:

                  Would it make a difference to dynamically link my application to the libraries rather than statically linking to the .libs?

                  Could well do - with DLLs, you explicitly specify what is exported, whereas with static libraries, there's less control over what is visible from the library.

                  Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                  S 1 Reply Last reply
                  0
                  • S Stuart Dootson

                    WendyS56 wrote:

                    Would it make a difference to dynamically link my application to the libraries rather than statically linking to the .libs?

                    Could well do - with DLLs, you explicitly specify what is exported, whereas with static libraries, there's less control over what is visible from the library.

                    Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                    S Offline
                    S Offline
                    SkysTheLimit
                    wrote on last edited by
                    #13

                    My program compiles and links successfully now :laugh: I used dynamic linking to lib4. I then needed to remove the NODEFAULTLIB:"libcpmt.lib and NODEFAULTLIB:"libc.lib" from my application link options. (I still needed to have NODEFAULTLIB:"libcmt.lib") Thank you for your help!

                    S 1 Reply Last reply
                    0
                    • S SkysTheLimit

                      My program compiles and links successfully now :laugh: I used dynamic linking to lib4. I then needed to remove the NODEFAULTLIB:"libcpmt.lib and NODEFAULTLIB:"libc.lib" from my application link options. (I still needed to have NODEFAULTLIB:"libcmt.lib") Thank you for your help!

                      S Offline
                      S Offline
                      Stuart Dootson
                      wrote on last edited by
                      #14

                      WendyS56 wrote:

                      My program compiles and links successfully now

                      Excellent! That wasn't so difficult now, was it :~ :-D

                      Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                      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