问题是这样的。
在一个工作区中包含了几个dll工程,然后在这些dll工程中声明和定义了一些类。在生成dll的时候,同时会生成对应的lib库文件。这些lib库文件都放在工作区目录下的lib文件夹下。
现在创建了一个新的工程,里边新建的一个类别的基类是其他工程中的类。然后在声明的时候,直接把在其他工程下基类的.h包含了进来。
之后,编译新工程,出现link2001错误。基类所有的成员函数,都无法被正确的链接。
请问该如何解决?
几个dll的工程,只定义了几个输出函数。
另外请问,dll工程生成的lib和静态链接库生成的lib库在使用上面有什么区别?

解决方案 »

  1.   

    使用#pragma comment(lib, "yourlib.lib")
    导入你的链接库
      

  2.   

    在头文件中添加
    #pragma comment(lib, "worksapce\\lib\\**.lib")dll工程生成的lib文件中仅仅是关于其对应DLL文件中函数的重定位信息,静态链接库生成的lib库包含执行代码,会链接到你的exe中去。动态库的知识看看这《深入浅出Visual C++动态链接库(Dll)编程》
    http://soft.yesky.com/lesson/318/2166818.shtml
      

  3.   

    如果我在dll工程中没有声明输出类,我也一样可以链接dll生成的lib库文件,在其他工程中继承该dll中的类别吗
      

  4.   

    这点我有些疑问。之前,有一个工程,里边定义和实现了几个类,然后没有把这些类导出。之后在另外一个新工程,其中有一个类使用了前面这个工程中的所有类。但是,编译可以过。而且,在link的时候,新工程会自动链接前面dll工程生成的lib库文件。