vs 2017 静态库 动态库 的初步使用

静态库的初步使用

  1. 新建 静态库 项目 Lib1
    会产生 sln文件与vcproj文件,vcproj是工程文件,sln是解决方案文件
    一个解决方案可以有多个工程
    在头文件(Lib1.h)写函数声明,在cpp文件定义函数实现
    这时候右键点击项目 ->生成, 会产生 Lib1.lib 的静态库文件
  2. 使用这个静态库文件
    新建一个控制台项目
    a)在主函数cpp文件里面 通过#include “相对路径\Lib1.h” 将函数声明引用过来
    b)引用第一步生成的静态库文件
    右键项目 -> 属性 ->配置属性 ->链接器->常规->附加库目录 将第一步生成的Lib1.lib文件所在的目录添加上(可以是相对路径)
    右键项目 -> 属性 ->配置属性 ->链接器-> 输入->附加依赖项 填写上静态库文件的名字 Lib1.lib(这一步也可以通过代码来完成
#pragma comment(lib, "Lib1.lib")

这个时候就可以正常使用这个静态库提供的函数了

动态库的初步使用

  1. 用vs新建一个动态库项目 fouroperations,
    会出现 dllmain.cpp这个文件内容如下:
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"BOOL APIENTRY DllMain( HMODULE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)
{switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}return TRUE;
}

再创建要对外提供的 头文件 与 源文件
fouroperations.h

#pragma onceclass FourOperations {
public:__declspec(dllexport) FourOperations();__declspec(dllexport) ~FourOperations(); static __declspec(dllexport) double add(double a, double b);//加法static __declspec(dllexport) double sub(double a, double b);//减法static __declspec(dllexport) double mul(double a, double b);//乘法static __declspec(dllexport) double div(double a, double b);//除法__declspec(dllexport) void print();
};

fouroperations.cpp

// fouroperations.cpp : 定义 DLL 应用程序的导出函数。
//#include "stdafx.h"
#include "fouroperations.h"
#include "iostream"
using namespace std;FourOperations::FourOperations() {}FourOperations::~FourOperations() {}double FourOperations::add(double a, double b) {return a + b;
}
double FourOperations::sub(double a, double b) {return a - b;
}
double FourOperations::mul(double a, double b) {return a * b;
}
double FourOperations::div(double a, double b) {return a / b;
}
void FourOperations::print() {cout << "this is fouroperations.cpp" <<endl;
}

这时候右键项目,点击生成会生成dll文件,发布的话,就需要
头文件 fouroperations.h 与 fouroperations.lib 与 fouroperations.dll
在这里插入图片描述
2. 使用这个动态库文件
新建一个项目,右键项目属性->配置属性->c/c+±>常规->附加包含目录(把动态库文件的 fouroperations.h 添加进去 )
右键项目属性->配置属性->链接器->常规->附加库目录(填写fouroperations.lib 所在的路径)
右键项目属性->配置属性->链接器->输入->附加依赖项(填写fouroperations.lib )

这样就可以正常使用这个动态库文件了

另外关于 linux下,如果出现 静态库 使用了动态库, 而我们又要使用这个静态库的 情景:
参考https://www.cnblogs.com/fnlingnzb-learner/p/8119729.html
非常详细

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言贪吃蛇

扩展功能实现 加速减速计分链表实现彩色界面暂停 开源代码 贪吃蛇 动图展示&#xff0c;&#xff08;加载比较慢&#xff09;

C++ 读取windows服务列表 与操作注册表

读取服务列表 https://www.cnblogs.com/Leo-Forest/archive/2013/05/03/3056569.html 操作注册表 https://blog.csdn.net/yanchenyu365/article/details/84840908

Python练手项目

python3学习笔记《目录》 PyCharm和git安装教程 git入门教程 python3学习笔记 Mooc学习Python3笔记 python3字符串处理&#xff0c;高效切片 三国演义人物出场统计 统计哈姆雷特文本中高频词的个数 python3制作动态二维码 python的文件操作 简单的爬虫笔记 爬虫实战项…

windows C++ 通过WMI获取底层信息

参考 可以通过修改参数来获取相应的信息 https://www.cnblogs.com/hjbf/p/10775112.html https://docs.microsoft.com/zh-cn/windows/win32/cimwin32prov/win32-operatingsystem?redirectedfromMSDN

知网毕业论文爬取

知网论文 查找文献的时候每次只显示10页二次检索功能又还没有&#xff08;不知道是不是我没找到&#xff09;。干脆用爬虫把所有和自己论文关键字相关的文献题目都爬取下来&#xff0c;然后自己做一个小的检索表。 开源项目 https://github.com/hodgekou/CNKICrawler.git 配…

go语言 函数相关1:实参到形参的传递永远是值拷贝

相关知识点 a. 函数实参到形参的传递永远是值拷贝 b. 函数参数 支持不定长参数,不定参数名在函数体 内相当于切片&#xff0c;对切片的操作同样适合对不定参数的操作 c. 切片是引用类型&#xff0c;值包含指向数组的指针 func test1(s ...int) { // s为不定长参数s[0] 888 }…

git 初步使用01

git工作流程 git的安装 1&#xff09;安装git 2&#xff09;安装乌龟 3&#xff09;汉化乌龟创建本地仓库 在一个空目录&#xff0c;打开git bash here&#xff0c; 输入命令 git init 删除并保留本地副本 选中目标文件&#xff0c;右键乌龟&#xff0c;删除并保留本地副本 这…

net-tools和ifconfig

文章目录历史关系两者使用对比一、显示所有已连接的网络接口二、激活或停用网络接口三、为网络接口分配IPv4地址四、移除网络接口的IPv4地址五、显示网络接口的IPv4地址六、为网络接口分配IPv6地址七、显示网络接口的IPv6地址八、移除网络设备的IPv6地址九、改变网络接口的MAC地…

go语言在windows编译在linux上运行的可执行程序

package mainimport ("fmt""os""os/exec" )//filepath: 要编译的文件的路径 func build(filepath string){_ os.Setenv("CGO_ENABLED", "0")_ os.Setenv("GOARCH", "amd64")_ os.Setenv("GOOS&…

Django无法显示图片

首先注意的一点是&#xff0c;Django没有根目录的这个说法&#xff0c;所以下载下来的html文件没有办法直接使用&#xff0c;必须进行修改路径&#xff0c;特别是图片引用的路径&#xff0c;需要进行修改。 路径不对 源码 {% load staticfiles %} <img src"{% stati…

go语言函数相关

函数类型 函数类型也叫作函数签名&#xff0c; 就是函数定义首行去掉函数名、参数名和&#xff5b;&#xff0c;可以使用fmt.Printf 的”%T”格式化参数打印函数的类型。 可以使用 type 定义函数类型&#xff0c;函数类型变量可以作为函数的参数或返回值。 实际函数类型变量和…

go语言如何连接数据库

文章目录安装驱动连接数据库查询表结果插入结果删除结果安装驱动 go get github.com/go-sql-driver/mysqlimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql" )连接数据库 //用户名&#xff1a;密码^tcp(地址:3306)/数据库db, err…

在windows下,编译可访问https的libcurl静态库过程

1. 首先编译openssl静态库 整个过程用的是 vs2015命令提示工具 需要安装perl 下载地址&#xff1a;添加链接描述 解压后&#xff0c; 在 openssl-1.0.2e目录下创建develop这个文件夹&#xff0c; cd到 openssl-1.0.2e目录下&#xff0c; a.配置编译文件和模式 执行 perl Co…

Go语言爬虫项目将结果写入MySql数据库

来源于Google资深工程师深度讲解Go语言 package mainimport ("fmt""io/ioutil""net/http" )const url "http://www.zhenai.com/zhenghun"func main() {//发送get请求resp, err : http.Get(url)if err ! nil {panic(err)}//关闭通道d…

go语言学习路径

个人记录 go语言如何连接数据库&#xff1a;增删改查 Go语言爬虫项目将结果写入MySql数据库 go语言急速入门

在windows上使用go编译dll文件,供C++调用

C项目是win32的&#xff0c;所以go的编译环境也要改成win32的 cmd下&#xff0c;修改环境变量&#xff1a; set GOARCH386 set CGO_ENABLED1 使用go env 查看是否生效参考&#xff1a;https://bbs.csdn.net/topics/394513992. 2. 安装编译环境 MinGW下载安装gcc,g编译器 参考&…

go语言急速入门

Go 语言极速入门1 - 环境搭建与最简姿势 Go 语言极速入门2 - 基础语法 Go 语言极速入门3 - 内建容器 Go 语言极速入门4 - 面向对象 Go 语言极速入门5 - 面向接口 Go 语言极速入门6 - 闭包 Go 语言极速入门7 - 资源管理与错误处理 Go 语言极速入门8 - Goroutine Go 语言极速入门…

windows远程桌面mstsc使用 代理

转自 https://blog.csdn.net/bodybo/article/details/6638005

go语言扫描四位数可用域名

域名注册查询接口(API)的说明 原文出处 域名查询 接口采用HTTP&#xff0c;POST&#xff0c;GET协议&#xff1a; 调用URL&#xff1a;http://panda.www.net.cn/cgi-bin/check.cgi 参数名称&#xff1a;area_domain 值为标准域名&#xff0c;例&#xff1a;hichina.com 调用…