Hier ist das Szenario:Linkers Problem auf VS2005 mit VC++
Plattform: VS2005 und Sprache ist VC++
Situation: Es gibt nur 1 Montage CMPW32. Es hat 2 Projekte: 1 ist ein DLL-Projekt namens CMPW32 und der zweite ist ein .exe-Projekt namens Treiber Sie beide teilen den gleichen Debug-Ordner unter dem Haupt-Assembly-Ordner. Ich konnte einige Funktionen aus der DLL erfolgreich exportieren. Das Treiberprojekt greift auf 1 dieser exportierten Funktionen zu. (Zuallererst bin ich nicht, wenn Funktionen für Projekte in der SAME-Assembly exportiert werden müssen, um sie verwenden zu können. Ich kann einfach die Header-Dateien einschließen und die Funktionen verwenden, die ich denke.)
Folgende sind ein paar
//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..
}
Fehler auf den Aufbau der Lösung:
Error13 Fehler LNK2019: nicht aufgelöstes externes Symbol „public: __thiscall CMM :: ~ Codezeilen von einigen Dateien, die Ihnen nützlich sein könnten, mein Problem zu analysieren CMM (void) "(?? 1CMM @@ QAE @ XZ) referenziert in der Funktion _wmain main.obj
Error15 fatal error LNK1120: 2 nicht aufgelöste externe C: \ "somepath hier, die ich kann nicht offen legen" \ Projects \ CMPW32 \ Debug \ Driver.exe
Bitte beachten Sie: Wenn ich nur die CMPW32 zu bauen wählen DLL-Projekt, es gibt keine Fehler und die Datei CMPW32.dll wird im Debug-Ordner mit den richtigen Funktionen generiert werden exportiert. Es scheint jedoch ein Linking-Problem zu geben, das ziemlich offensichtlich ist und ich weiß nicht, was los ist. Ich habe jede benötigte Datei inkludiert und auch die benötigte .lib in die Eingabe der "Projekteinstellungen" eingetragen. Die Pfade sind auch richtig eingestellt.
Es wäre wirklich hilfreich, wenn mir jemand dabei helfen könnte. Bitte lemme wissen, ob zusätzliche Informationen benötigt werden.
Danke, Viren
Der Destruktor befindet sich in der CMM.cpp-Datei. – zack