DLL - LNK2019 Linker Errors. Calling base class methods. Works Fine if methods are in the .h file.
Hi,
I am stuck. I tried so many different things to no avial.
I am getting linker errors when I try to access methods in the .cpp =
file.
It works fine if access the method is in the .h file.
x = GetPenthouse()->CallingPenthouse(); //Works because it is a Top =
Level class
x = GetPenthouse()->CallingMezzanine(); //Fails. Method in =
Mezzanine.cpp file
x = GetPenthouse()->CallingBaseInHeader(); //works. Method in Base.h =
file
*Note that I am using a nifty way of importing/exporting methods from =
the DLL
I found on Code Project.
The following must be added to the stdafx.h file.
#define _MYLIB_DLLAPI_
#define _MYLIB_NOAUTOLIB_
// This is the inheritance structure.
class CPenthouse : public CMezzanine
class CMezzanine : public CBase
class CBase
/********************* Penthouse.h =
************************************************************/
#pragma once
#include ".\mezzanine.h"
#ifdef _MYLIB_DLLAPI_
#define MYLIB_DLLAPI __declspec( dllexport )
#else
#define MYLIB_DLLAPI __declspec( dllimport )
#endif
#ifndef _MYLIB_NOAUTOLIB_
#ifdef _DEBUG
#pragma comment(lib, "DLLInheritanceTest.lib")
#else
#pragma comment(lib, "DLLInheritanceTest.lib")
#endif
#endif
class MYLIB_DLLAPI CPenthouse : public CMezzanine
{
public:
CPenthouse(void);
virtual ~CPenthouse(void);
int CallingPenthouse();
};
/********************* Penthouse.cpp =
************************************************************/
#include "stdafx.h"
#include ".\penthouse.h"
CPenthouse::CPenthouse()
{
}
CPenthouse::~CPenthouse()
{
}
int CPenthouse::CallingPenthouse()
{
return 3;
}
/********************* Mezzanine.h =
************************************************************/
#pragma once
#include ".\base.h"
class CMezzanine : public CBase
{
public:
CMezzanine();
virtual ~CMezzanine();
int CallingMezzanine();
int CallingMezzanine2(){ return 2; }
};
/********************* Mezzanine.cpp =
************************************************************/
#include "stdafx.h"
#include ".\mezzanine.h"
CMezzanine::CMezzanine()
{
}
CMezzanine::~CMezzanine()
{
}
int CMezzanine::CallingMezzanine()
{
return 2;
}
/********************* Base.h =
************************************************************/
#pragma once
class CBase
{
public:
CBase(void);
virtual ~CBase();
int CallingBase();
int CallingBaseInHeader(){ return -1; }
};
/********************* Base.cpp =
************************************************************/
#include "stdafx.h"
#include ".\base.h"
CBase::CBase()
{
}
CBase::~CBase()
{
}
int CBase::CallingBase()
{
return -1;
}
Thanks,