一.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 - 创建和使用动态库的更多相关文章

  1. 用Visual Studio创建集成了gtest的命令行工程

    gtest代码库中的sample代码 在gtest的代码库中,包含了10个sample的代码,覆盖了gtest的常见用法,sample的代码位于以下文件夹: gtest\samples 由于gtest ...

  2. # 2017-2018-2 20155228 《信息安全系统设计原理》 使用VirtualStudio2008创建和调用静态库和使用VirtualC++6.0创建和调用动态库

    使用virtual c++ 6.0创建和调用动态库 不得不说一下关于环境的问题 只要我打一个响指,一半的安装在win7上的VC6.0都会因为兼容性问题直接崩掉 懒得研究怎么解决兼容性的问题了,直接开一 ...

  3. 使用Visual Studio创建简单的自己定义Web Part 部件属性

    使用Visual Studio创建简单的自己定义Web Part 部件属性 自己定义属性使用额外的选项和设置拓展你的Web part部件.本文主要解说怎样使用Visual Studio创建简单的自己定 ...

  4. 使用Visual Studio 创建新的Web Part项目

    使用Visual Studio 创建新的Web Part项目 Web Part是你将为SharePoint创建的最常见的对象之中的一个.它是平台构建的核心基块. 1. 管理员身份打开Visual St ...

  5. 使用Visual Studio 创建可视Web Part部件

    使用Visual Studio 创建可视Web Part部件 可视Web Part部件是很强大的Web 部件.它提供内置设计器创建你的用户界面. 本文主要解说怎样使用Visual Studio 创建可 ...

  6. 【翻译】使用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 ...

  7. Visual studio 创建项目失败vstemplate

    Visual studio 创建项目失败 提示 the vstemplate file references the wizard class 'Microsoft.VisualStudio.WinR ...

  8. Xamarin 中Visual Studio创建项目提示错误

    Xamarin 中Visual Studio创建项目提示错误 错误信息:Object reference not set to an instance of an object 出现这种情况,是由于没 ...

  9. Visual studio 创建文件时自动添加备注

    Visual studio 创建文件时自动添加备注 描述 要求每回添加一个类,普通类或单元测试类文件头自动添加备注, 比如:Copyright, FileName, Author and so on. ...

随机推荐

  1. [CF235E]Number Challenge

    $\newcommand{fl}[1]{\left\lfloor#1\right\rfloor}$题意:求$\sum\limits_{i=1}^a\sum\limits_{j=1}^b\sum\lim ...

  2. [UOJ164]V

    线段树真是好东西... 每个线段树节点维护四个标记:$a,b,maxa,maxb$,$(a,b)$表示对子树内的所有数执行$x'=\max(x+a,b)$,$maxa,maxb$是历史最大标记,初始时 ...

  3. [CF441E]Valera and Number

    题意:给定$x,k,p$和一份伪代码,伪代码大致是循环$k$次,每次有$p\%$的概率把$x$乘$2$,有$(100-p)\%$的概率把$x$加$1$,问最后在二进制下$x$的末尾期望$0$个数 鸽了 ...

  4. 8.5(java学习笔记)8.5 字节码操作(javassist)

    一.javassist javassist让我们操作字节码更加简单,它是一个类库,允许我们修改字节码.它允许java程序动态的创建.修改类. javassist提供了两个层次的API,基于源码级别的和 ...

  5. 英尺和米之间的转换 Exercise06_09

    /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:英尺和米之间的转换 * */ public class Exercise06_09 { public static void ...

  6. iOS开发——随机数的使用

    1).arc4random() 比较精确不需要生成随即种子        使用方法 :                  通过arc4random() 获取0到x-1之间的整数的代码如下:       ...

  7. 使用.Net中的WeakDictionary — ConditionalWeakTable

    有的时候,我们需要给某些数据添加一些附加信息,一种常用的做法是使用一个Dictionary在填充这些附加信息如: var data = new Data();    var tag = new Tag ...

  8. 前端h5开发发布ios

    1.首先要有一个html5+的软件HBuilder 2.整体完成然后就点发布,主要注意页面入口就是你的网页的入口 3.下载一个appuploader软件,无需mac本就可以方便的申请证书和描述(因为发 ...

  9. Texygen文本生成,交大计算机系14级的朱耀明

    文本生成哪家强?上交大提出基准测试新平台 Texygen 2018-02-12 13:11测评 新智元报道 来源:arxiv 编译:Marvin [新智元导读]上海交通大学.伦敦大学学院朱耀明, 卢思 ...

  10. C#之鼠标模拟技术

    游戏程序的操作不外乎两种——键盘输入控制和鼠标输入控制,几乎所有游戏中都使用鼠标来改变角色的位置和方向,本文主要是讲述如何使用C#调用Windows API函数实现鼠标模拟操作的功能.首先通过结合Fi ...