2013-04-25 90 views
0

我使用Visual Studio 2012和我creared dll而不使用MFC,它生成的DLL。但是,當我使用指定下列選項生成特定目錄下的庫文件: - 去proeperties頁面級 - >高級 - >導入庫 ../../../lib/myapp.lib動態庫不生成使用Visual Studio 2012的lib文件2012

它不是在指定的文件夾中生成lib文件。請幫幫我 。

感謝&問候 維卡斯

回答

0

只是解決了類似的問題。 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{ ... }; 
0
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; 
     } 

    }