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. Mobile Development
  3. Mobile
  4. Porting from CE4.x to CE6

Porting from CE4.x to CE6

Scheduled Pinned Locked Moved Mobile
questionhelp
3 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.
  • G Offline
    G Offline
    GDavy
    wrote on last edited by
    #1

    I am porting an application from CE 4.x to CE 6.0 It all went quite smoothly, but there is one problem. The application uses an external library build for CE4.0, so when the compiler tries to link to that library I initialy got the error: fatal error LNK1104: cannot open file 'mfcs42.lib' What I did is I added the directory with these CE4.0 libraries to the directories the compiler should search for libs and build again, which got me to the next problem: error LNK2005: "public: void __cdecl CRect::InflateRect(int,int,int,int)" (?InflateRect@CRect@@QAAXHHHH@Z) already defined in MFCCE400.lib(mfcce400.dll) atlsd.lib error LNK2005: "public: void __cdecl CRect::DeflateRect(int,int,int,int)" (?DeflateRect@CRect@@QAAXHHHH@Z) already defined in MFCCE400.lib(mfcce400.dll) atlsd.lib fatal error LNK1169: one or more multiply defined symbols found SDK_TR4_CE6_MAXIE_2008Q1 The InflateRect and DeflateRect functions apparantly are both defined in the MFCE400.lib(CE4) and in the atlsd.lib(CE6). Both these functions are called in my application which builds fine without that external library, so my application does not need that CE4 library. From the moment I add the code that uses that external library I get into this problem. So my question is: How can I link to that external library without getting in this trouble? Or how can I make the compiler only link the external lib to the CE4 libs and not use these libs for my application? Thanks for any insight you might provide. Regards, Davy

    M 1 Reply Last reply
    0
    • G GDavy

      I am porting an application from CE 4.x to CE 6.0 It all went quite smoothly, but there is one problem. The application uses an external library build for CE4.0, so when the compiler tries to link to that library I initialy got the error: fatal error LNK1104: cannot open file 'mfcs42.lib' What I did is I added the directory with these CE4.0 libraries to the directories the compiler should search for libs and build again, which got me to the next problem: error LNK2005: "public: void __cdecl CRect::InflateRect(int,int,int,int)" (?InflateRect@CRect@@QAAXHHHH@Z) already defined in MFCCE400.lib(mfcce400.dll) atlsd.lib error LNK2005: "public: void __cdecl CRect::DeflateRect(int,int,int,int)" (?DeflateRect@CRect@@QAAXHHHH@Z) already defined in MFCCE400.lib(mfcce400.dll) atlsd.lib fatal error LNK1169: one or more multiply defined symbols found SDK_TR4_CE6_MAXIE_2008Q1 The InflateRect and DeflateRect functions apparantly are both defined in the MFCE400.lib(CE4) and in the atlsd.lib(CE6). Both these functions are called in my application which builds fine without that external library, so my application does not need that CE4 library. From the moment I add the code that uses that external library I get into this problem. So my question is: How can I link to that external library without getting in this trouble? Or how can I make the compiler only link the external lib to the CE4 libs and not use these libs for my application? Thanks for any insight you might provide. Regards, Davy

      M Offline
      M Offline
      Madhu Nair 0
      wrote on last edited by
      #2

      Exclude the default libraries and specify only the non-conflicting libraries. You can use /NODEFAULTLIB:library [^] in your linker option for excluding default libs. Like, /NODEFAULTLIB:MFCE400.lib

      G 1 Reply Last reply
      0
      • M Madhu Nair 0

        Exclude the default libraries and specify only the non-conflicting libraries. You can use /NODEFAULTLIB:library [^] in your linker option for excluding default libs. Like, /NODEFAULTLIB:MFCE400.lib

        G Offline
        G Offline
        GDavy
        wrote on last edited by
        #3

        Thanks for the reply! I have tried this now, but now I stumble on a new problem. The external library seems to require being linked to the mfcce400.lib, because if I put the mfcce400.lib to the Ignore-list I get a heap of unresolved external symbol errors inside that library. error LNK2001: unresolved external symbol "public: __cdecl CString::CString(void)" (??0CString@@QAA@XZ) comCtrl.lib error LNK2019: unresolved external symbol "public: __cdecl CString::CString(void)" (??0CString@@QAA@XZ) referenced in function "public: __cdecl CTTP::CTTP(bool)" (??0CTTP@@QAA@_N@Z) comCtrl.lib etc... I'm beginning to think that I probably won't be able to use that external library in CE6... And it's actually quite important :( Regards, Davy

        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