现有两个项目,一个是静态库项目,一个是动态库项目,现在希望生成动态库项目时,把静态库中的类也同时导出,都是VC项目,请教应该怎样实现或用怎样折衷.

解决方案 »

  1.   

    如果你的动态库项目与静态库项目没有冲突,你可以在动态库项目中包含静态库项目,然后在动态库项目写静态库中相应的导出函数,这样就可以只使用你的动态库了
    其实就像你的动态库里面用了Windows的静态库一样,只是自己在动态库中添加静态库的相应导出函数。
      

  2.   

    "如果你的动态库项目与静态库项目没有冲突,你可以在动态库项目中包含静态库项目,然后在动态库项目写静态库中相应的导出函数,这样就可以只使用你的动态库了 
    其实就像你的动态库里面用了Windows的静态库一样,只是自己在动态库中添加静态库的相应导出函数。"Q:具体"相应的导出"怎么导,能说明下吗?不是函数..是类..
    "针对静态库在动态库项目中做一个封装类,然后导出这个封装类"Q:那我每个类都要做个封装类?
      

  3.   

    必须要封装,而且还不能是继承式的封装。因为DLL导出类时,所有继承的基类也必须导出。
      

  4.   

    静态库中没有加__declspec(dllexport),就只能在DLL中封装一个导出函数
      

  5.   

    静态库中可以用__declspec(dllexport)编译生成lib?
      

  6.   

    可以在静态库中导出函数,但是很容易引起问题,假设只有你的DLL使用了这个lib,则没有问题,但如果有多个项目都要引用这个lib,则每个项目的可执行文件里都会导出这个函数。
      

  7.   

    恩...dll和静态库编译连接都成功了..不过隐式链接调用dll是连接错误.还是找不到外部符号..就是说导出不成功..
    估计是lib的中的代码根本没有连接到dll中.怎样能强制连接?现在有比较简单的方法解决..就是两个项目引用同一份文件,用宏开关设置是否启用导出.由于还要提供给隐式链接,所以默认定为
    #ifndef _USE_LIB_
    #ifdef CLASS_EXPORTS
    #define CLASS_API __declspec(dllexport)
    #else
    #define CLASS_API __declspec(dllimport)
    #endif
    #else
            #define CLASS_API 
    #endifdll  : 启用CLASS_EXPORTS
    lib  : 启用_USE_LIB_
    使用dll的项目   : 不启用 
    其他使用该lib文件的项目 : 启用 _USE_LIB_
      

  8.   

    关于静态库中可以用__declspec(dllexport)导出类..能具体说一下吗?如果不行就结帖了.