__declspec(dllexport) 和 __declspec(dllimport)的作用

时间:2022-09-10 15:56:13

operatordll.h

#include <iostream>

#ifndef _WIN32
  #define DLL_EXPORT
#else

#ifdef OPERATORDLL_EXPORTS
  #define DLL_EXPORT __declspec(dllexport)
#else

/*dllimport是为了更好的处理类中的静态成员变量(或者其他...)的,如果没有静态成员变量(或者其他...),那么这个__declspec(dllimport)无所谓.

不加import 如果把dll和头文件提供给别人使用的时候就会出“unsloved symbol a”的问题。*/

  #define DLL_EXPORT __declspec(dllimport)      
#endif

#endif

class DLL_EXPORT Operatordll
{
public:
static int a;

double mul_double(double a, double b);

double div_double(double a, double b);
};

//////////////////////////////////////////////////////////////////////

operatordll.cpp

#include "operatordll.h"

int Operatordll::a = 0;      //1. 如果是放在.h中,需要注意避免重复,可以使用预处理. 2. 如果不是太影响程序美观的话,放到其他不会多次定义的地方,如cpp文件下

double Operatordll::mul_double(double a, double b)
{
return (a * b);
}

double Operatordll::div_double(double a, double b)
{
return (a / b);
}