dll 导出函数
今天练习dll导出函数的时候遇到了问题希望大神帮忙解决!Thank you!
首先我定义了一个类在Base.h文件中:
#pragma once
#include <iostream>
#include "ExportCommon.h"
namespace ExportBase
{
class CBase
{
public:
CBase(void);
~CBase(void);
virtual void output()
{
std::cout<<"CBase";
}
static CBase* getInstance()
{
static std::auto_ptr<CBase> pBase;
if(!pBase.get())
{
pBase.reset(new CBase());
assert(NULL != pBase.get());
}
return pBase.get();
}
};
}
接着我又定义了一个接口导出文件ExportIterface.h:
#include "ExportCommon.h"
namespace ExportBase
{
void EXPORTER_DLL_EXPORT outputMsg();
}
其中的头文件#include "ExportCommon.h"是这样的:
#ifdef DLLEXPORT_EXPORTS
#define EXPORTER_DLL_EXPORT __declspec(dllexport)
#else
#define EXPORTER_DLL_EXPORT __declspec(dllimport)
#endif
这个文件ExportIterface.h的实现:
在ExportIterface.cpp中:
#include "Base.h"
#include "ExportInterface.h"
void ExportBase::outputMsg()
{
CBase::getInstance()->output();
}
但是导出的时候出现了两个连接错误:
OutputToFile.obj :
error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall ExportBase::CBase::CBase(void)" (__imp_??0CBase@ExportBase@@QAE@XZ) referenced in function "public: __thiscall ExportBase::COutputToFile::COutputToFile(void)" (??0COutputToFile@ExportBase@@QAE@XZ)
1>OutputToFile.obj :
error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall ExportBase::CBase::~CBase(void)" (__imp_??1CBase@ExportBase@@QAE@XZ) referenced in function "public: __thiscall ExportBase::COutputToFile::~COutputToFile(void)" (??1COutputToFile@ExportBase@@QAE@XZ)
但是如果把CBase的类也导出来的话就没有错误,这是为什么呢?