• 静态库与导出函数、导出类


    1、静态链接库

    新建“win32项目”,在“应用程序设置”中选择lib。新建lib.h和lib.cpp两个文件,lib.h和lib.cpp的源代码如下:

    //文件:lib.h
    #ifndef LIB_H
    #define LIB_H
    extern "C" int add(int x,int y);   //声明为C编译、连接方式的外部函数
    #endif
    
    //文件:lib.cpp
    #include "lib.h"
    int add(int x,int y)
    {
        return x + y;
    }

    编译后,会生成dll和lib两个文件,下面看如何使用。源码如下:

    #include <stdio.h>
    #include "..\lib.h"
    #pragma comment( lib, "..\\debug\\libTest.lib" )  //指定与静态库一起连接
    int main(int argc, char* argv[])
    {
        printf( "2 + 3 = %d", add( 2, 3 ) );
    }

    2、导出函数

             新建“win32项目”,在“应用程序设置”中选择dll。新建commendll.h和commendll.cpp两个文件。commendll.h中

    namespace CommenDLL
    {
             class MathFun
             {
             public:
                       static __declspec(dllexport)double Add(double a, double b);
                       static __declspec(dllexport)double Minus(double a, double b);
             };
    }

    commendll.cpp中

    namespace CommenDLL
    {
             double MathFun::Add(double a, double b)
             {
                       return a+b;
             }
             double MathFun::Minus(double a, double b)
             {
                       return a-b;
             }
    }

    3、导出类

    在同上个工程的头文件中

    class __declspec(dllexport) Circle
    {
    public:
             Circle(){};
             ~Circle(){};
             void   SetCenter(Point point);
             void   SetRadius(int r);
             double GetZhouChang();
             double GetMianJi();
    private:
             Point center;
             int radius;
    };

    CPP文件中

    void Circle::SetCenter(Point point)
    {
        this->center.x = point.x;
        this->center.y = point.y;
    }
    
    void Circle::SetRadius(int r)
    {
        this->radius = r;
    }
    
    
    double Circle::GetZhouChang()
    {
        const double pi = 3.1415926;
        return this->radius*pi*2;
    }
    
    double Circle::GetMianJi()
    {
        const double pi = 3.1415926;
        return pi*this->radius*this->radius;
    }

    调用的时候,导入生成的库,直接使用其函数或者类即可。

  • 相关阅读:
    ModelFirst的CRUD
    EF中逆变和协变
    ERP客户关系渠管理(二十)
    ERP反馈信息管理(十九)
    ERP系统上传文档信息下载(十八)
    比较 数组与对象的同源特性
    对android的认识
    我的知乎
    HTTP来源地址
    BroadcastReceiver 翻译
  • 原文地址:https://www.cnblogs.com/flysnail/p/2585020.html
Copyright © 2020-2023  润新知