请教一个DLL中导出头文件的问题,谢谢!

rabbit729 2008-01-11 02:05:50
请教一个关于DLL的问题?

/***********Test1.h*****************/

class Test1{
public:
Test1();
~Test1();

void DisplayTest1();
};

/**********Test1.cpp*****************/
#include <iostream>
using namespace std;

#include "Test1.h"

Test1::Test1()
{

}

Test1::~Test1()
{

}

void Test1::DisplayTest1()
{
cout<<"Test1"<<endl;
}

下面是我的DLL的头文件
/************DllTest.h***********/
#ifdef DLL1_API
#else
#define DLL1_API _declspec(dllimport)
#endif

#include "Test1.h"

class DLL1_API DllTest{
public:
DllTest();
~DllTest();
void DisplayDllTest();
void DisplayDllTest1();

private:
Test1 m_test1;
};

/***********DllTest.cpp***********/
#define DLL1_API _declspec(dllexport)

#include <iostream>
using namespace std;

#include "DllTest.h"

DllTest::DllTest()
{

}

DllTest::~DllTest()
{

}

void DllTest::DisplayDllTest()
{
cout<<"DllTest"<<endl;
}

void DllTest::DisplayDllTest1()
{
m_test1.DisplayTest1();
}

我使用如下代码来使用这个DLL
#include <iostream>
using namespace std;
#include "DllTest.h"

void main()
{
DllTest test;
test.DisplayDllTest();
test.DisplayDllTest1();
char a;
cin>>a;
}

编译时提示找不到"Test1.h",如果我把Test1.h添加至测试程序中就可以解决,我的问题是这种情况下是不是必须把Test1.h
提供给DLL的使用者,如果这样的话感觉挺别扭的,我只想提供DllTest.h,DllTest.lib DllTest.dll
请问如果想只提供这三个文件该如何解决?我不想把所有的类定义都放在DllTest.h中,所以这种方法就不要说了,谢谢各位!
...全文
120 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyh12345 2008-01-12
  • 打赏
  • 举报
回复
用dll导出类,不是一个很好的设计。
用lib
mr.zhoux 2008-01-11
  • 打赏
  • 举报
回复
...貌似我语文学的不好没看懂 lz的意思 dll导出类必须要导出函数定义接口用户才能知道,也就是那个.h文件
jameshooo 2008-01-11
  • 打赏
  • 举报
回复
既然你导出类,就有义务提供类定义的头文件
he_sl 2008-01-11
  • 打赏
  • 举报
回复
感觉你想让其它人使用你的Test1类的功能
又不想让别人看到你的Test1类的结构

可以只让你的dll输出函数
在输出函数的内部实现中自己使用Test1
这样就不用公开Test1的结构了

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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