windwos下静态链接库和动态链接库

本文主要来分享一下windos环境下的静态链接库和动态链接库
测试环境:vs2017
一、静态链接库实例

***libPri.h***
#pragma once

extern "C"  int add(int a, int b);

***libPri.cpp***
#include <iostream>
#include "libPrj.h"

//lib文件拷贝到exe同级目录下。.h能找到就好
***calllib.cpp***
#include <iostream>
#include <stdlib.h>

#include "../Debug/libPrj.h"

#pragma comment(lib,"libPrj.lib")

int main()
{
	std::cout << add(1, 2) << std::endl;
}

运行结果:
3

二、动态链接库实例
注意事项:
1、函数声明需要添加 __declspec(dllexport) (__declspec(dllexport)用于Windows中的动态库中,声明导出函数、类、对象等供外面调用,省略给出.def文件。即将函数、类等声明为导出函数,供其它程序调用,作为动态库的对外接口函数、类等),如果不添加 __declspec(dllexport),不会生成.lib文件。
2、工程配置为dll,可以在创建工程的时候直接选择创建dll工程,也就可以默认创建好之后再修改为dll工程都可以(记得创建win32控制台应用)

**********************dll工程**************************** 
***dllPrj.h***
#pragma once

__declspec(dllexport) int sum(int a,int b);

***dllPrj.cpp***
#include "dllPrj.h"

int sum(int a, int b)
{
	return a + b;
}

********************调用dll工程**********************
***calldll.cpp***
#include <iostream>
#include "stdafx.h"
#include "dllPrj.h"

int main()
{
	std::cout<<sum(1,2);
    return 0;
}

运行结果同上,很简单,不赘述,而调用函数里需要注意.h文件、.lib文件、dlll文件的位置。
.h不再赘述
lib是编译链接使用(编译完成可以移除,但是如果需要重新编译则需要能链接到)
dll是运行使用

下面看一下文中代码在vs200中的配置
在这里插入图片描述
dll则放在exe同级目录下

人,总是要有一点精神的,不是吗?

发布了32 篇原创文章 · 获赞 23 · 访问量 876

猜你喜欢

转载自blog.csdn.net/weixin_40179091/article/details/105134146