2015-08-19 2 views
2

J'ai téléchargé un projet qui a été développé à l'origine dans MFC 4.1. J'essaye de construire ce projet dans MFC 6.0. Lorsque je l'ai ouvert en utilisant Open WorkSpace, et le construire, puis l'erreur suivante est venue.Erreur lors de la construction du projet MFC 4.1 dans MFC 6.0

Lien: LNK1104 d'erreur fatale: ne peut pas ouvrir le fichier « mfc42ud.lib »

Sur Internet, je trouve une solution pour corriger cette erreur en ignorant cette bibliothèque de paramètres du projet. Je l'ai fait et une autre erreur sur des lignes similaires est apparue pour le fichier mfcs42ud.lib. Et j'ai réparé ça aussi.

enter image description here

Quand j'ai ajouté les deux fichiers .lib ignorer la liste, et de le construire, je reçois 901 erreurs comme ci-dessous ....

------ -------------- Configuration: doodads - Débogage Win32 Unicode -------------------- Connexion ... doodads.obj:
erreur LNK2001: symbole externe non résolu __afxForceEXCLUDE ADDRESS.OBJ: erreur LNK2001: symbole externe non résolu __afxForceEXCLUDE expose.obj: erreur LNK2001: symbole externe non résolu __afxForceEXCL UDE progress.obj: erreur LNK2001: symbole externe non résolu __afxForceEXCLUDE MaskDlg.obj: erreur LNK2001: symbole externe non résolu __afxForceEXCLUDE SETKEY.OBJ: erreur LNK2001: symbole externe non résolu __afxForceEXCLUDE SPINNER.OBJ: erreur LNK2001: symbole externe non résolu Statistiques __afxForceEXCLUDE obj: erreur LNK2001: symbole externe non résolu __afxForceEXCLUDE ANIME.OBJ: erreur LNK2001: symbole externe non résolu __afxForceEXCLUDE StdAfx.obj : erreur LNK2001: symbole externe non résolu __afxForceEXCLUDE MAINFRM.OBJ: erreur LNK2001: symbole externe non résolu __afxForceEXCLUDE DODADDOC. OBJ: erreur LNK2001: symbole externe non résolu __afxForceEXCLUDE DoDadvw.obj: erreur LNK2001: non résolu symbole externe __afxForceEXCLUDE doodads.obj: erreur LNK2001: symbole externe non résolu __afxForceSTDAFX ADDRESS.OBJ: Erreur LNK2001: symbole externe non résolu __afxForceSTDAFX expose.obj: erreur LNK2001: symbole externe non résolu __afxForceSTDAFX progress.obj: erreur LNK2001: externe non résolu Symbole __afxForceSTDAFX MaskDlg.obj: erreur LNK2001: symbole externe non résolu __afxForceSTDAFX SETKEY.OBJ: erreur LNK2001: symbole externe non résolu __afxForceSTDAFX SPINNER.OBJ: erreur LNK2001: symbole externe non résolu __afxForceSTDAFX stats.obj: erreur LNK2001: symbole externe non résolu __afxForceSTDAFX ANIME.OBJ: erreur LNK2001: symbole externe non résolu __afxForceSTDAFX StdAfx.obj: erreur LNK2001: symbole externe non résolu __afxForceSTDAFX MAINFRM.OBJ: erreur LNK2001: symbole externe non résolu __afxForceSTDAFX DODADDOC.OBJ: erreur LNK2001: symbole externe non résolu __afxForceSTDAFX DoDadvw.obj: erreur LNK2001: symbole externe non résolu __afxForceSTDAFX

Voici le fichier de code pour votre référence.

Add.h

// ADD.H - Header file for your Internet Server 
// add Extension 

#include "resource.h" 

class CAddExtension : public CHttpServer 
{ 
public: 
    CAddExtension(); 
    ~CAddExtension(); 

// Overrides 
    // ClassWizard generated virtual function overrides 
     // NOTE - the ClassWizard will add and remove member functions here. 
     // DO NOT EDIT what you see in these blocks of generated code ! 
    //{{AFX_VIRTUAL(CAddExtension) 
    public: 
    virtual BOOL GetExtensionVersion(HSE_VERSION_INFO* pVer); 
    //}}AFX_VIRTUAL 

    // TODO: Add handlers for your commands here. 
    // For example: 

    void Default(CHttpServerContext* pCtxt, 
          LPCTSTR pstrOp1, LPCTSTR pstrOp2); 

    DECLARE_PARSE_MAP() 

    //{{AFX_MSG(CAddExtension) 
    //}}AFX_MSG 
}; 

Add.cpp

// ADD.CPP - Implementation file for your Internet Server 
// add Extension 

#include "stdafx.h" 
#include "add.h" 

#include <stdio.h> 

/////////////////////////////////////////////////////////////////////// 
// command-parsing map 

BEGIN_PARSE_MAP(CAddExtension, CHttpServer) 
    // TODO: insert your ON_PARSE_COMMAND() and 
    // ON_PARSE_COMMAND_PARAMS() here to hook up your commands. 
    // For example: 

    ON_PARSE_COMMAND(Default, CAddExtension, ITS_PSTR ITS_PSTR) 
    ON_PARSE_COMMAND_PARAMS("opone=~ optwo=~") 
    DEFAULT_PARSE_COMMAND(Default, CAddExtension) 
END_PARSE_MAP(CAddExtension) 


/////////////////////////////////////////////////////////////////////// 
// The one and only CAddExtension object 

CAddExtension theExtension; 


/////////////////////////////////////////////////////////////////////// 
// CAddExtension implementation 

CAddExtension::CAddExtension() 
{ 
} 

CAddExtension::~CAddExtension() 
{ 
} 

BOOL CAddExtension::GetExtensionVersion(HSE_VERSION_INFO* pVer) 
{ 
    // Call default implementation for initialization 
    CHttpServer::GetExtensionVersion(pVer); 

    // Load description string 
    TCHAR sz[HSE_MAX_EXT_DLL_NAME_LEN+1]; 
    ISAPIVERIFY(::LoadString(AfxGetResourceHandle(), 
      IDS_SERVER, sz, HSE_MAX_EXT_DLL_NAME_LEN)); 
    _tcscpy(pVer->lpszExtensionDesc, sz); 
    return TRUE; 
} 

/////////////////////////////////////////////////////////////////////// 
// CAddExtension command handlers 

void CAddExtension::Default(CHttpServerContext* pCtxt, 
          LPCTSTR pstrOp1, LPCTSTR pstrOp2) 
{ 
    StartContent(pCtxt); 
    WriteTitle(pCtxt); 

    int nOp1; 
    int nOp2; 

    if (*pstrOp1 != '~' && *pstrOp2 != '~') 
    { 
     nOp1 = atoi(pstrOp1); 
     nOp2 = atoi(pstrOp2); 

     char sz[1024]; 

     sprintf(sz, "The result is: %d\n", nOp1 + nOp2); 
     *pCtxt << sz; 
    } 
    else 
    { 
    *pCtxt << "<FORM ACTION=\"http://mooseboy/add.dll\" METHOD=\"GET\">"; 
    *pCtxt << "Enter the first number: <INPUT TYPE=\"text\" NAME=\"opone\" VALUE=\"0\" SIZE=10><p>"; 
    *pCtxt << "Enter the second number: <INPUT TYPE=\"text\" NAME=\"optwo\" VALUE=\"0\" SIZE=10><p>"; 
    *pCtxt << "<p> <INPUT TYPE = \"SUBMIT\" VALUE=\"Add it up\">"; 
    *pCtxt << "</FORM>"; 
    } 

    EndContent(pCtxt); 
} 

// Do not edit the following lines, which are needed by ClassWizard. 
#if 0 
BEGIN_MESSAGE_MAP(CAddExtension, CHttpServer) 
    //{{AFX_MSG_MAP(CAddExtension) 
    //}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
#endif // 0 



/////////////////////////////////////////////////////////////////////// 
// If your extension will not use MFC, you'll need this code to make 
// sure the extension objects can find the resource handle for the 
// module. If you convert your extension to not be dependent on MFC, 
// remove the comments arounn the following AfxGetResourceHandle() 
// and DllMain() functions, as well as the g_hInstance global. 

static HINSTANCE g_hInstance; 

HINSTANCE AFXISAPI AfxGetResourceHandle() 
{ 
    return g_hInstance; 
} 

BOOL WINAPI DllMain(HINSTANCE hInst, ULONG ulReason, 
        LPVOID lpReserved) 
{ 
    if (ulReason == DLL_PROCESS_ATTACH) 
    { 
     g_hInstance = hInst; 
    } 

    return TRUE; 
} 

Pour information, je l'ai marqué Microsoft Foundation Classes utiliser MFC dans une DLL partagée sous l'onglet Général. S'il vous plaît, aidez, TIA.

+1

Bien que vous ayez * supprimé * les bibliothèques de liens qui contiennent ces fonctions, vous obtiendrez bien sûr des références non définies lors de la liaison. Au lieu de simplement supprimer quelques bibliothèques, vous pouvez indiquer à l'éditeur de liens de lier les bibliothèques * correct *. –

+0

@JoachimPileborg Quelles sont les bibliothèques correctes que j'ai besoin d'ajouter, parce que ces deux ne sont pas disponibles dans le projet que j'ai téléchargé, et j'ai une connaissance minimale de MFC .. Pourriez-vous s'il vous plaît guider? Ceci est MFC 6. pour votre référence. –

Répondre

0

MFC 6.0 utilise MFC42*.LIB fichiers de bibliothèque (étrange mais vrai). Donc, il semble que vous liez avec les noms de fichiers corrects.

Si vous obtenez ces messages d'erreur lorsque vous liez votre projet, je suppose que votre fichier de projet a quelque chose de mal, ou Visual C++ 6 n'est pas correctement installé. La solution n'est pas de supprimer ces bibliothèques, mais de découvrir pourquoi Visual C++ ne les trouve pas.

Votre projet est en cours de compilation en configuration unicode-debug. Avez-vous installé les bibliothèques Unicode lorsque vous avez installé Visual C++? Peut-être que c'est une option d'installation opt-in (pas sûr). Pouvez-vous construire votre projet en utilisant une autre configuration, comme release-unicode? Ou déboguer?

Ce qui peut vous aider est de créer un nouveau projet vide Visual C++/MFC (File/New Project/C++/MFC/MFC Application), donc obtiendra une configuration de projet MFC valide. Assurez-vous de choisir la configuration Unicode, car il s'agit de la configuration que vous souhaitez utiliser.

+0

J'ai récemment compilé de nombreux projets dans VC 6. Donc VC est installé correctement. –

+0

Êtes-vous sûr qu'il est installé avec des bibliothèques Unicode? – Dazzibao

+0

Comment puis-je vérifier cela? –