Visual Studio - 创建和使用动态库
一.VS2013 创建动态库
1.1 新建项目

1.2.在Win32应用程序向导对话框上勾选“DLL”和“空项目”复选框,点完成

1.3 .添加对应的.C文件和.h文件

1.4 在.h文件中添加如下代码
#define DLL_API __declspec(dllexport) //_declspec(dllexport):导出标志
最终的.h和.c文件如下:
seqlist.h
#ifndef __MY_SEQLIST_H__
#define __MY_SEQLIST_H__ #define DLL_API __declspec(dllexport) //_declspec(dllexport):导出标志 typedef void SeqList;
typedef void SeqListNode; // 创建线性表
DLL_API SeqList* SeqList_Create(int capacity); // 销毁线性表
DLL_API void SeqList_Destroy(SeqList *list); // 清空线性表
DLL_API void SeqList_Clear(SeqList *list); // 获得线性表的长度
DLL_API int SeqList_Length(SeqList *list); // 获得线性表的容量
DLL_API int SeqList_Capacity(SeqList *list); // 向线性表中插入一个元素
DLL_API int SeqList_Insert(SeqList *list, int pos); // 获取线性表中某一个位置的元素
DLL_API SeqListNode* SeqList_Get(SeqList *list, int pos); // 删除线性表中某一个位置的元素
DLL_API SeqListNode* SeqList_Delete(SeqList *list, int pos); #endif
seqlist.c
#include <stdio.h>
#include "seqlist.h" // 创建线性表
SeqList* SeqList_Create(int capacity)
{ return NULL;
} // 销毁线性表
void SeqList_Destroy(SeqList *list)
{ } // 清空线性表
void SeqList_Clear(SeqList *list)
{ } // 获得线性表的长度
int SeqList_Length(SeqList *list)
{
return ; // 长度暂时写成5,便于在使用动态库时进行测试
} // 获得线性表的容量
int SeqList_Capacity(SeqList *list)
{
return ;
} // 向线性表中插入一个元素
int SeqList_Insert(SeqList *list, int pos)
{
return ;
} // 获取线性表中某一个位置的元素
SeqListNode* SeqList_Get(SeqList *list, int pos)
{
return NULL;
} // 删除线性表中某一个位置的元素
SeqListNode* SeqList_Delete(SeqList *list, int pos)
{
return NULL;
}
1.5 点击菜单栏上的“生成”-“生成解决方案”,生成对应的dll及lib文件

1.6 如图,已成功生成了我们需要的seqlist.dll和seqlist.lib文件

二.VS2013 使用动态库
2.1 新建一个空项目:并将之前的头文件seqlist.h添加到头文件目录,然后进入该项目所在文件夹,在该文件夹下新建lib目录,并将刚才生成的seqlist.lib文件拷贝进去。



2.2 然后将生成的seqlist.dll文件放入到Debug目录下,编译器会自动搜索到这个文件,当然也可以放在系统目录下

接下来需要告诉编译器头文件所在的位置,引导库的位置和它的名字
2.3 右击项目项目名称“seqlistDemo”,选择“属性”

2.4 在弹出的菜单中,选择“VC++目录”

2.5 首先设置当前头文件所在目录

2.6 然后设置引导库的位置和名称
设置引导库的位置

设置引导库的名称

2.7 测试是否可以正常调用动态库中封装的函数
#include <stdio.h>
#include <stdlib.h>
#include "seqlist.h" int main()
{ printf("current nums is %d\n", SeqList_Length(NULL)); // 我们之前在动态库中将SeqList_Length()函数的返回的值固定为5
system("pause"); return ;
}

End
Visual Studio - 创建和使用动态库的更多相关文章
- 用Visual Studio创建集成了gtest的命令行工程
gtest代码库中的sample代码 在gtest的代码库中,包含了10个sample的代码,覆盖了gtest的常见用法,sample的代码位于以下文件夹: gtest\samples 由于gtest ...
- # 2017-2018-2 20155228 《信息安全系统设计原理》 使用VirtualStudio2008创建和调用静态库和使用VirtualC++6.0创建和调用动态库
使用virtual c++ 6.0创建和调用动态库 不得不说一下关于环境的问题 只要我打一个响指,一半的安装在win7上的VC6.0都会因为兼容性问题直接崩掉 懒得研究怎么解决兼容性的问题了,直接开一 ...
- 使用Visual Studio创建简单的自己定义Web Part 部件属性
使用Visual Studio创建简单的自己定义Web Part 部件属性 自己定义属性使用额外的选项和设置拓展你的Web part部件.本文主要解说怎样使用Visual Studio创建简单的自己定 ...
- 使用Visual Studio 创建新的Web Part项目
使用Visual Studio 创建新的Web Part项目 Web Part是你将为SharePoint创建的最常见的对象之中的一个.它是平台构建的核心基块. 1. 管理员身份打开Visual St ...
- 使用Visual Studio 创建可视Web Part部件
使用Visual Studio 创建可视Web Part部件 可视Web Part部件是很强大的Web 部件.它提供内置设计器创建你的用户界面. 本文主要解说怎样使用Visual Studio 创建可 ...
- 【翻译】使用Visual Studio创建Asp.Net Core MVC (一)
This tutorial will teach you the basics of building an ASP.NET Core MVC web app using Visual Studio ...
- Visual studio 创建项目失败vstemplate
Visual studio 创建项目失败 提示 the vstemplate file references the wizard class 'Microsoft.VisualStudio.WinR ...
- Xamarin 中Visual Studio创建项目提示错误
Xamarin 中Visual Studio创建项目提示错误 错误信息:Object reference not set to an instance of an object 出现这种情况,是由于没 ...
- Visual studio 创建文件时自动添加备注
Visual studio 创建文件时自动添加备注 描述 要求每回添加一个类,普通类或单元测试类文件头自动添加备注, 比如:Copyright, FileName, Author and so on. ...
随机推荐
- java.sql.SQLException: Access denied for user ''@'localhost' (using password: No)
出错原因: 连接数据库是忘记配username 和 password 了 刚在学hiberbate4,把持久层从纯粹的jdbc改为hiberbate 出现的错误.(原来的是直接读取properties ...
- 将js方法名作为参数传给js方法
1,demo1:参数function无参 <script> function fun1(){ fun3('fun4'); } function fun2(){ fun3('fun5'); ...
- React Native学习之DeviceEventEmitter传值
使用DeviceEventEmitter前需添加 import { AppRegistry, StyleSheet, Text, View, DeviceEventEmitter } form 'r ...
- Android中选项卡功能的实现
Android中选项卡功能的实现 Android中使用TabHost和TabWidget来实现选项卡功能.TabHost必须是布局的根节点,它包含两个子节点: TabWidget,显示选项卡: Fra ...
- 可见性-volatile
出处: http://blog.csdn.net/vking_wang/article/details/9982709
- gzip压缩目录
很遗憾,gzip不能针对整个目录进行压缩,只能递归压缩目录下的每一个文件. 当然,替代方案是只用tar进行打包,比如 tar cfz dir.tar.gz dirname
- 安装CentOS 6停在selinux-policy-targeted卡住的问题解决
在刚开始安装时,设置swap分区.设置swap分区.设置swap分区 参考: http://tieba.baidu.com/p/3817971339 http://blog.csdn.net/zhan ...
- Word2010插入页码分节符
不是分页符,分节符主要是为了插入前后两种不同类型的页码,比如前面查罗马数字,从目录开始插入阿拉伯数字.
- javascript快速入门7--ECMAScript语法基础
ECMAScript的基础概念 熟悉Java.C和Perl这些语言的开发者会发现ECMAScript的语法很容易掌握,因为它借用了这些语言的语法.Java和ECMAScript有一些关键语法特性相同, ...
- CSS中样式
CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离.要想让CSS对网页内容有效果,必须将CSS代码引入网页,通常有四 ...