2009-07-23 8 views
0

Voici le scénario:problème Linker sur VS2005 avec VC++

Plate-forme: VS2005 et la langue est VC

la situation: Il y a seulement 1 Assemblée CMPW32. Il a 2 projets: 1 est un projet DLL appelé CMPW32 et le 2ème est un projet .exe appelé Driver Ils partagent tous deux le même dossier Debug sous le dossier de l'assembly principal. J'ai réussi à exporter quelques fonctions de la DLL. Le projet Driver accède à l'une de ces fonctions exportées. (Tout d'abord je ne suis pas si les fonctions doivent être exportées pour les projets dans l'ensemble SAME pour pouvoir les utiliser.Je peux juste inclure les fichiers d'en-tête et utiliser les fonctions que je pense.)

Voici quelques exemples lignes de code à partir des fichiers qui pourraient vous être utiles pour analyser mon problème:

//main.cpp file from the Driver project which is meant to generate Driver.exe 

#pragma comment(lib, "winmm.lib") 
#include <CM.h> 
#include "conio.h" 
#include "CMM.h" 
#include "CMF.h" 
#define C_M_F _T("c:\\CannedMessages.en-US") 
int_tmain (int argc, TCHAR* argv []) 
{ 
    CMM myobjModel; 
    CMF::Read (CANNED_MESSAGES_FILE, myobjModel); 
    getch(); 
} 

//CMM.h file 
#ifndef C_M_M 
#define C_M_M 
#include "CMD.h" 
#include "CMC.h" 
#include "CM.h" 
#define _C_M_DLL 
#include "CMP.h" 
class CM_DLL_API CMM 
{ //some code here... 
} 


//CMF.h 
#ifndef C_M_F 
#define C_M_F 
#include "CMM.h" 
#define _C_M_DLL 
#include "CMP.h" 
class CM_DLL_API CMF 
{ //some code here... 
} 

//CMP.h 
#ifndef C_M_P 
#define C_M_P 
#include "CMD.h" 
#define C_M_B_F _T("CannedMessages.") 
#ifdef _C_M_DLL 
#define CM_DLL_API __declspec(dllexport) 
#else 
#define CM_DLL_API __declspec(dllimport) 
#endif 
extern "C" 
{ 
//list of functions to be exported.. 
} 

eRREURS sur la construction de la solution:

erreur Error13 LNK2019: symbole externe non résolu « public: CMM __thiscall :: ~ CMM (void) "(?? 1CMM @@ QAE @ XZ) référencé dans la fonction _wmain main.obj

Error15 LNK1120 erreur fatale: 2 unresolved externals C: \ "somepath ici que je ne peux pas divulguer des renseignements" \ Projects \ CMPW32 \ Debug \ Driver.exe

S'il vous plaît Note: Si je choisis de ne construire que le CMPW32 Projet DLL, il n'y a pas d'erreurs et le fichier CMPW32.dll est généré dans le dossier de débogage avec les bonnes fonctions pour être exporté. Cependant, il semble y avoir un problème de lien qui est assez évident et je ne sais pas ce qui se passe. J'ai inclus tous les fichiers requis et ai également entré le .lib requis dans l'entrée des "Paramètres du projet". Les chemins ont été correctement définis.

Ce serait vraiment utile si quelqu'un pouvait m'aider avec cela. S'il vous plaît lemme savoir si des informations supplémentaires requises.

Merci, Viren

Répondre

3

On dirait que votre projet Driver.exe ne comprend pas les fichiers source du RPC de la classe CMM, probablement CMM.cpp.

ou

Vous avez déclarer une destructor pour la classe CMM dans votre fichier .H (CMM.H) et oubliaient de mettre en œuvre dans le fichier .cpp (CMM.CPP).

+0

Le destructeur se trouve dans le fichier CMM.cpp. – zack

Questions connexes