我把已经建立好的两个类(a,b)放在了dll里,其中a是要导出的,b是a在内部调用的,可是我生成dll后,再主程序调用的时候总是去寻找b的头文件,然后肯定是找不到,编译并通过,我只给了a的文件,我认为b应该已经被封装在dll了啊还有一个问题是,我有一个类,只有头文件,没有源文件,成员函数都是用内联函数实现的,生成dll后只有dll,没有lib,为什么呢

解决方案 »

  1.   

    你在定义a的时候,在a里面不要定义b类型的成员变量,可以用b的指针类型的成员变量代替,提供给外部的头文件中把b*写成void*就可以了。
      

  2.   

    http://support.microsoft.com/kb/815065/zh-cn
      

  3.   

    不太可能只有DLL而没有LIB,除非你设置不生成LIB。
      

  4.   

    是这样的,我写个简单的类一个cpp一个h可以生成 dll以及其lib
    开始我将cpp删除掉,只留下h,函数功能改为在头文件内部用内联函数实现
    我编译后就没有lib了
    只把dll和头文件拷到工程目录,就出现由于找不到lib提示的错误,难道对于这种只有头文件的类只能使用动态加载?
      

  5.   

    你的h文件没有被任何cpp包含?那就没有导出,不能被其它程序调用。你至少要有一个cpp文件包含这个h文件并定义DllMain才行。
      

  6.   

    楼上的你的意思是说,我还需要建立一个空的cpp,还要定义dllmain么?
      

  7.   

    DLL必须有DllMain,另外你需要有一个cpp文件包含h文件,VC在编译的时候是只认cpp(和c)文件的,没有被包含的h文件是不编译的。