一.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. fiddler进行弱网测试

    fiddler模拟限速的原理 弱网测试原帖连接:http://blog.csdn.net/eleven521/article/details/19089671 我们可以通过fiddler来模拟限速,因 ...

  2. (转)关于Unity3D的编辑器崩溃时的线索定位

    今天在Unity3D编辑器中进行功能测试的时候,编辑器突然崩溃了(就是整个窗口突然消失,进程直接结束)之后也没有任何错误报告信息提示.好吧,应该是偶现问题,我侥幸地想,我用的好歹也是正版啊,不应该总出 ...

  3. iOS中的场景转换机制的浅显分析

    目前Apple推荐的场景转换的方法有以下几个: 一般的跳转方法: presentViewController Discussion In a horizontally compact environm ...

  4. (转)Android Eclipse 代码混淆

    为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译 1. 大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文件,这个对混淆代码很重要,如果你不小心 ...

  5. Delphi Delay 延时计数的功能。 下面的方法都是思路,但是没有用在项目上

    procedure Tfrm_InstrumentControl.aa;var CurLength: Word; vTimeLength: Word;begin Screen.Cursor := cr ...

  6. IE8 XSS Filter Bypass

    漏洞说明:IE8是微软新推出的一款浏览器,其对CSS2.1的完整支持,HTML5的支持,内置开发工具等等.IE8在浏览器安全性上有非常大的改进,内置了一款无法卸载的Xss Filter,对非持久型跨站 ...

  7. 使用InstallUtil对Windows服务进行安装与卸载

    关于Visual Studio 2012中使用InstallUtil对Windows服务进行安装与卸载的文章,在MSDN中的http://msdn.microsoft.com/en-us/librar ...

  8. APK大小的瘦身的总结:

    首先是看了博客:http://blog.csdn.net/sw950729/article/details/64919051 时.认为大神我就是马云飞写的非常有道理.全部自己就自己写了一遍.长话短说: ...

  9. 经典算法——Jump Game(II)

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  10. hexo 使用教程

    hexo 使用教程 这个早就用起来了,写给需要的小伙伴 mayufo.github.io 先扔出自己的地址 安装 想玩hexo,需要安装以下应用 git node 安装完成在终端输入 $ npm in ...