dll 导出函数

AppreciationAll 2013-11-30 09:21:03
今天练习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的类也导出来的话就没有错误,这是为什么呢?
...全文
86 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyw 2013-12-01
  • 打赏
  • 举报
回复
缺少CBase和COutputToFile的实现代码。
AppreciationAll 2013-12-01
  • 打赏
  • 举报
回复
CBase和COutputToFile都是已经实现好了的。就是我就是想调用CBase中的一个输出方法来输出一些东西,于是我就写了一个函数,这个函数里边定义了一个static类型CBase变量,用这个对象调用他自己的方法输出。但是当我不导出这个CBase类的时候,就会出错。把CBase类一起导出就不会出错!!不知道为什么?

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧