在windows平台使用Visual Studio 2017编译动态库并使用
使用VS stdio制作顺序表的库文件
- .lib与.dll 区别
- lib是编译时需要的
- dll是运行时需要的
1、新建头文件和源文件
- SeqList.h
// SeqList.h
#ifndef SEQLIST_H__
#define SEQLIST_H__
#define N 10
typedef int SLDataType;
typedef struct SeqList
{
SLDataType data[N];
int size;
} SeqList;
void SeqInit(SeqList *L); // 初始化
void SeqPushBack(SeqList *L, SLDataType x); // 尾插
void SeqPrit(SeqList ps); // 打印
#endif
- SeqList.c
// SeqList.h
#include <stdio.h>
#include <stdlib.h>
#include "SeqList.h"
void SeqInit(SeqList *L)
{
L->size = 0;
}
void SeqPushBack(SeqList *L, SLDataType x)
{
L->data[L->size] = x;
L->size++;
}
void SeqPrit(const SeqList L)
{
for (size_t i = 0; i < L.size; i++)
{
printf("%d\t", L.data[i]);
}
printf("\n");
}
2、编译.lib库文件
依次点击调试-属性,打开属性页面。

在属性页面,选择配置Debug,平台选择x64,更改常规-属性默认值-配置类型选项,并选择 静态库。

点击生成-生成解决方案,看到生成SeqList.lib。


在x64-Debug文件下面可以看到生成的SeqList.lib。

2、编译.dll库文件
然后再点击生成-清理生成解决方案,并同样打开属性页面。

更改常规-属性默认值-配置类型选项,并选择动态库。

点击生成-生成解决方案,看到生成SeqList.dll。


在x64-Debug文件下面可以看到生成的 SeqList.dll。

至此,SeqList.lib 和 SeqList.dll都已经制作成功,下面开始使用。
使用SeqList.lib 和 SeqList.dll
新建解决方案Project.sln,并新建include和lib文件,并将SeqList.h和SeqList.dll复制到.sln 同级目录。

依次点击调试-属性,打开属性配置页面。将include和lib目录分别加到包含目录和库目录。

并在连接器-添加附加依赖项中加入SeqList.lib

然后编写测试文件,注意此时没有用到SeqList.c 。
#include <stdio.h>
#include <stdlib.h>
#include "include/SeqList.h"
int main(int argc, char** argv)
{
SeqList L;
SeqInit(&L);
SeqPushBack(&L, 1);
SeqPushBack(&L, 5);
SeqPushBack(&L, 9);
SeqPushBack(&L, 7);
SeqPrint(L);
return 0;
}
点击生成解决方案,运行结果如下

行文至此,关于自定义库文件的制作与使用全部介绍完毕。
在windows平台使用Visual Studio 2017编译动态库并使用的更多相关文章
- Windows下使用Visual Studio 2010编译ffmpeg全过程
在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ...
- Visual studio 2017编译 boost
下载: https://www.boost.org/ 或者 https://dl.bintray.com/boostorg/release/1.66.0/source/ 下载完成以后解压到自己想要 ...
- 使用Visual Studio 2017编译opencv 3.2版本
一.背景介绍 opencv是一个很强大的开源的计算机视觉库,应用领域如人机互动,图像处理,人脸识别,和现实生活中智能设计的关系很紧密.现在官方提供的编译包中,c++的只提供了x64位的library, ...
- Microsoft Visual Studio 2017 编译最新版 libuv 1.x
步骤很简单 1 下载最新版的 libuv(地址:https://github.com/libuv 2 安装Git,Python 2.7 ,cmake(这里使用的是 3.11.0-win64-x64 版 ...
- 如何使用Visual Studio 2017调试.net库源代码
在Visual Studio 2017按如下步骤设置: 1.取消选中(工具 - >选项 - >调试 - >仅我的代码)复选框.2.确保设置了(工具 - >选项 - >调试 ...
- windows Visual Studio 2017 编译 HEVC cmake-3.8.1-win64-x64.msi 下载
ttps://github.com/OpenHEVC/openHEVC 下载一 直接下载源码(可选)或下载源码包,我这里下载的是源码 打开 Visual Studio () 去 github 找到源码 ...
- Windows下使用Visual Studio 2010 编译ffmpeg全过程
(注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...
- 【FFMPEG】Windows下使用Visual Studio 2010编译ffmpeg全过程
原文 http://www.cnblogs.com/xylc/p/3683203.html 主题 FFmpegWindowsVisual Studio ffmpeg是一个开源的多媒体库,使用非常广泛 ...
- Microsoft Visual Studio 2017 编译最新版 libuv 1.x 并且生成 LIB 和 DLL 两种模式
以为昨天晚上编译通过就可以了,哪知道,早上编译DLL的一车的报错 今天开始逐个解决,终于把引用的问题一亿解决了,具体步骤如下 1 在 Windows 平台下编译出错,显示导出未定义,打开 uv-win ...
- 在Windows平台用visual studio编译的可执行文件部署时报:应用程序无法正常启动0xc000007b(跟DirectX9无关的原因)
最近在做EasyDarwin开源流媒体服务器Windows版本编译与部署时发现一个问题,在开发机本机运行都很正常,但是部署到目标机器(未安装vs等开发环境)时,莫名其妙报出了"应用程序无法正 ...
随机推荐
- 13-css兼容性处理(添加前缀)
const { resolve } = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') const M ...
- Netty介绍与认识
概述 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 2.体系结构图 Netty的核 ...
- 【性能】JDK和Jmeter的安装与配置
一.JDK环境配置 1. 下载JDK 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downl ...
- Go坑:time.After可能导致的内存泄露问题分析
Go 中 time.After 可能导致的内存泄露 一.Time 包中定时器函数 go v1.20.4 定时函数:NewTicker,NewTimer 和 time.After 介绍 time 包中有 ...
- html5和css3基础学习笔记
网页简介 一个页面包括结构.表现.行为三个部分. 结构:HTML用于描述页面的结构. 表现:CSS用于控制页面中元素的样式. 行为:JavaScript用于响应用户操作. 第一部分 HTML 5(Hy ...
- 【ATL】注册插件成功后自动设置浏览器允许弹出窗口注册表
STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine) { HRESULT hr = E_FAIL; static const wchar_t szU ...
- Spring中TranslationDefinition接口规定的七种类型的事务传播行为及其意思
- [OS/Linux] Linux核心参数:net.core.somaxconn(高并发场景核心参数)
0 序言 近期工作在搞压力测试,我负责开发维护的.基于sring-cloud-gateway的大数据网关微服务,其底层是基于spring-webflux-->reactor-netty--> ...
- 2021-08-09:给定一个有正、有负、有0的数组arr,给定一个整数k,返回arr的子集是否能累加出k。1)正常怎么做?2)如果arr中的数值很大,但是arr的长度不大,怎么做?
2021-08-09:给定一个有正.有负.有0的数组arr,给定一个整数k,返回arr的子集是否能累加出k.1)正常怎么做?2)如果arr中的数值很大,但是arr的长度不大,怎么做? 福大大 答案20 ...
- Node.js出现‘Cannot find module init’ 解决方法
1. 首先查看当前根目录是否有node_module文件夹,如果有,请删除 2. 输入 npm clean cache 3. 再次输入 node init -y 大功告成