0

我正在使用 Visual Studio 2012,我在不使用 MFC 的情况下创建了 dll,它生成了 dll。但是当我指定使用以下选项在特定目录中生成一个 lib 文件时:- 转到 proeperties 页面->高级->导入库 ../../../lib/myapp.lib

它没有在指定文件夹中生成 lib 文件。请帮我 。

感谢和问候维卡斯

4

3 回答 3

5

刚刚解决了一个类似的问题。Visual Studio 不会在不指示要在 dll 中公开哪些对象的情况下创建 .lib 文件。您需要像这样创建一个 win 导出标头:

#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{ ... };
于 2013-11-14T07:55:06.470 回答
1
    calculatelibrary.h

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

*/

    #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;  
        }  

    }
于 2017-06-19T10:48:45.900 回答
0

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

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

于 2013-06-08T19:00:20.277 回答