请教一个关于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中,所以这种方法就不要说了,谢谢各位!

解决方案 »

  1.   

    感觉你想让其它人使用你的Test1类的功能
    又不想让别人看到你的Test1类的结构可以只让你的dll输出函数   
    在输出函数的内部实现中自己使用Test1
    这样就不用公开Test1的结构了
      

  2.   

    ...貌似我语文学的不好没看懂 lz的意思  dll导出类必须要导出函数定义接口用户才能知道,也就是那个.h文件
      

  3.   

    用dll导出类,不是一个很好的设计。
    用lib