静的ライブラリとエクスポート関数、エクスポートクラス

6639 ワード

1、静的リンクライブラリ
新しい「win 32プロジェクト」を作成し、「アプリケーション設定」でlibを選択します.新しいlib.hとlib.cpp 2つのファイル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の2つのファイルが生成されます.次に、使用方法を見てみましょう.ソースコードは次のとおりです.
#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、エクスポート関数
「win 32プロジェクト」を新規作成し、「アプリケーション設定」でdllを選択します.新規作成hとcommendll.cppの2つのファイル.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;

}

呼び出すときは、生成されたライブラリをインポートし、その関数やクラスを直接使用すればよい.