通过封装使C、C++项目提供给其他用户使用(详细)

通过封装使C、C++项目提供给其他用户使用(详细)

**

通过封装使C、C++项目提供给其他用户使用

**

将要了解的内容:

_declspec(dllexport)

__declspec(dllexport)用于Windows中的动态库中,声明导出函数、类、对象等供外面调用,省略给出.def文件。即将函数、类等声明为导出函数,供其它程序调用,作为动态库的对外接口函数、类等。

原文链接:https://blog.csdn.net/fengbingchun/article/details/78825004/

**

_stdcall**

在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。在参数传递中,有两个很重要的问题必须得到明确说明:当参数个数多于一个时,按照什么顺序把参数压入堆栈函数调用后,由谁来把堆栈恢复原装。在高级语言中,通过函数调用约定来说明这两个问题。

常见的调用约定有:stdcall,cdecl,fastcall,thiscall,nakedcall

stdcall调用约定声明的语法为:

返回值 _stdcall 函数名(参数列表

stdcall的调用约定意味着:1)参数从右向左压入堆栈,2)函数自身修改堆栈 3)函数名自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸。

原文链接:

https://www.cnblogs.com/songfeixiang/p/3733661.html

**

pragma comment 的使用**

我们经常用到的是#pragma comment(lib,"*.lib")这类的。

#pragma comment(lib,“Ws2_32.lib”)表示链接Ws2_32.lib这个库。

和在工程设置里写上链入Ws2_32.lib的效果一样,不过这种方法写的

程序别人在使用你的代码的时候就不用再设置工程settings了

原文链接:

https://blog.csdn.net/qq_28351609/article/details/84570591

一、C++的封装形式

1、首先定义头文件和程序代码

//Point头文件

#pragma once

#define POINT_API _declspec(dllexport)

class POINT_API Point

{

public:

Point();

Point(double X, double Y);

double GetX();

double GetY();

void SetX(double X);

void SetY(double Y);

Point operator=(Point P);

Point operator+(Point p);

Point operator-(Point p);

private:

double x;

double y;

};

//Point.h具体内容

#include "Point.h"

Point::Point() {}

Point::Point(double X, double Y)

{

x = X;

y = Y;

}

double Point::GetX()

{

return x;

}

double Point::GetY()

{

return y;

}

void Point::SetX(double X)

{

x = X;

}

void Point::SetY(double Y)

{

y = Y;

}

Point Point::operator=(Point P)

{

x = P.x;

y = P.y;

return *this;

}

Point Point::operator+(Point p)

{

this->x += p.x;

this->y += p.y;

return *this;

}

Point Point::operator-(Point p)

{

this->x -= p.x;

this->y -= p.y;

return *this;

}

2、点击属性

3、点击配置类型中的静态库(.lib) ,并点击确定

4、点击重新生成

出现以下内容,说明生成成功

5、再次点击属性,点击配置列表,选择动态库(.dll),点击确定,点击重新生成,出现以下内容表示生成成功

6、找到该项目所在文件夹,并将 .h .dll .lib 文件复制到同一文件夹下

7、将该文件夹拷贝到,想要用此头文件的项目文件目录下

8、进入属性、VC++目录 点击库目录 编辑

点击这个图标,并点击 … 双击POINT 文件

点击选择文件夹,然后点击确定

点击属性 、链接器、输入、附加依赖项,将你的 .lib文件名称写上即可

回到主界面,就可以正常使用该头文件了

**

二、C的封装形式

1、创建头文件以及源程序

//头文件

//#pragma once

#ifndef BIDAXIAO_H

#define BIDAXIAO_H

#define YXTWH_API _declspec(dllexport)

#ifdef _cplusplus

extern "C"

{

#endif

YXTWH_API int _stdcall II_MAX(int a, int b);

YXTWH_API int _stdcall II_MIN(int a, int b);

YXTWH_API int _stdcall III_MAX(int a, int b, int c);

#ifdef _cplusplus

}

#endif

#endif // POINT_H

**

#include "BIDAXIAO.h"

int _stdcall III_MAX(int a, int b, int c)

{

a = a > b ? a : b;

a = a > c ? a : c;

return a;

}

int _stdcall II_MAX(int a, int b)

{

return a > b ? a : b;

}

int _stdcall II_MIN(int a, int b)

{

return a < b ? a : b;

}

//需要注意的是,这里要加上 _stdcall ,否则会出现以下内容,使包含此头文件的程序无法运行

C语言和C++的过程,除了代码的不同,其他步骤都是相同的

到此就结束了,若还有不清楚的地方,可以参看视频:

https://www.bilibili.com/video/BV1tA411N7HB?p=2&share_source=copy_web

🌸 相关推荐

用手机怎么取消QQ黄钻的自动续费
365bet.com亚洲版

用手机怎么取消QQ黄钻的自动续费

📅 10-22 👀 8519
360safe文件夹删不掉?360safe文件夹怎么删除?
谬的成语
365bet.com亚洲版

谬的成语

📅 07-08 👀 8001