动态库不生成使用Visual Studio 2012的lib文件2012

问题描述:

我使用Visual Studio 2012和我creared dll而不使用MFC,它生成的DLL。但是,当我使用指定下列选项生成特定目录下的库文件: - 去proeperties页面级 - >高级 - >导入库 ../../../lib/myapp.lib动态库不生成使用Visual Studio 2012的lib文件2012

它不是在指定的文件夹中生成lib文件。请帮帮我 。

感谢&问候 维卡斯

请参阅以下内容:你可能需要声明/出口(http://msdn.microsoft.com/en-us/library/7k30y2k5.aspx

http://msdn.microsoft.com/en-us/library/67wc07b9.aspx请参阅 “备注”

只是解决了类似的问题。 Visual Studio不创建.lib文件,而不指示要在dll中公开哪些对象。您需要创建一个双赢的出口头是这样的:

#ifndef BLABLABLA 
#define BLABLABLA 

#ifdef MYAPPLIB_EXPORTS 
#define MYAPPLIB_API __declspec(dllexport) 
#elif defined(MYAPPLIB_EXPORTS_STATIC) 
#define MYAPPLIB_API 
#else 
#define MYAPPLIB_API __declspec(dllimport) 
#endif 

#endif // !BLABLABLA 

然后,你需要声明MYAPPLIB_EXPORTS作为预处理宏。包括在其他API头这个新的头文件,您要您的API中暴露每一个类或方法后,您可以添加MYAPPLIB_API自己的声明,如:

class MYAPPLIB_API MyClass{ ... }; 

calculatelibrary.h 

/* 默认情况下, DLL的New Project模板将PROJECTNAME_EXPORTS添加到DLL项目的已定义的预处理器符号中。 在此示例中,CALCULATELIBRARY_EXPORTS是在您构建calculateLibrary DLL项目时定义的。 定义了CALCULATELIBRARY_EXPORTS符号时,CALCULATELIBRARY_API符号在此代码的成员函数声明中设置__declspec(dllexport)修饰符。 该修饰符告诉编译器和链接器从DLL中导出函数或变量,以便其他应用程序可以使用它。 当CALCULATELIBRARY_EXPORTS未定义时 - 例如,客户端应用程序包含头文件时 - CALCULATELIBRARY_API在成员函数声明中定义__declspec(dllimport)修饰符。该修饰符可以优化应用程序中函数的导入。欲了解更多信息enter image description here

*/

#ifndef _calculate_library_h 
    #define _calculate_library_h 

    #ifdef CALCULATELIBRARY_EXPORTS 
    #define CALCULATELIBRARY_API _declspec(dllexport) 
    #else 
    #define CALCULATELIBRARY_API _declspec(dllimport) 
    #endif 



    namespace calculatelibrary 
    { 
      class CALCULATELIBRARY_API clsCalculateLibrary{ 

       // Returns a + b 
       double Add(double a, double b); 
     }; 
    } 
    #endif _calculate_library_h 

    // CalculateLibrary.cpp : Defines the exported functions for the DLL application. 
    // 

    #include "stdafx.h" 
    #include "CalculateLibrary.h" 


    namespace calculatelibrary 
    { 

      double clsCalculateLibrary::Add(double a, double b) 
     { 
      return a + b; 
     } 

    }