VS2013动态库dll的创建和调用

一、VS2013动态库文件的创建

1、新建项目,Visual C++,win32项目,输入项目名称和项目路径,例如项目名称如test_lib,解决方案名称默认和项目名称相同,也可以修改为其他名称,例如dll_test,点击确定。

2.进入到应用程序向导,点击应用程序设置

3.选择DLL,勾选空项目,点击完成。

4.之后会自动创建一个空项目如下:

5.选择源文件右键,添加新文件,创建test_lib.c文件

6.同理选择头文件右键,添加创建test_lib.h

7.创建完成如下:

8.向test_lib.h添加内容:

_declspec(dllexport):为导出标志

AB_EXPORTS int test(void)  用导出标志修饰函数表示此函数为导出函数,即导出给外部调用。

#ifndef _TEST_LIB_H_
#define _TEST_LIB_H_

#include <stdint.h>
#include <time.h>

#if (defined WIN32 || defined _WIN32 || defined WINCE)
#define AB_EXPORTS __declspec(dllexport)
#else
#define AB_EXPORTS   extern
#endif

#ifdef __cplusplus
extern "C" {
#endif



AB_EXPORTS int test(void);



#ifdef __cplusplus
};
#endif

#endif //_TEST_LIB_H_

9.向test_lib.c添加如下内容

#include <stdio.h>
#include "test_lib.h"


int test(void)
{
	printf("Helloworld\n");

	return 0;
}

10.菜单栏选择生成解决方案,此时在项目所在目录下的文件就生成了test_lib.lib和test_lib.dll

 

二、使用刚才创建的动态库

1、新建项目命名为test_demo,解决方案选择“添加到解决方案”,如下图选择dll_test,点击确定

2.点击应用程序设置,选择控制台应用程序,勾选空项目,点击完成。

3.可以看到同一个解决方案下面创建了两个项目

4.选择test_demo,右键“设置为启动项”, 在test_demo项目创建demo.c文件

5.demo.c里添加如下代码,test()即为dll库里的函数,此时dll库还没添加到test_demo项目,直接编译会报错

#include <stdio.h>

int main(void)
{
	test();

	return 0;
}

6.选择资源文件,右键添加现有项,选择test_lib.dll和test_lib.lib

7.添加之后如下,需要注意的是由于这里两个项目都在同一个解决方案,test_lib生成的库和test_demo生成的可执行文件都在同一个解决方案dll_test的输出Debug目录,因此直接添加两个库没有问题,如果两个项目生成的库和可执行文件不在同一个目录的话,需要先把库文件复制到test_demo生成的可执行文件目录再添加

8.再次编译test_demo项目则编译成功并能正常运行,但是会报未定义函数test()

9.将test_lib.h复制到demo.c同目录下,选择头文件添加现有项目,如下:

10.在demo.c添加头文件“include “test_lib.h””,再次编译就不会报错了

注意:

1.本项目要确保库文件和可执行文件在同一目录,头文件和调用demo.c文件在同目录再添加的,否则会出现找不到头文件和找不到库的错误。

如果要配置支持头文件和demo.c在不同目录,或者库文件和可执行文件在不同目录的话需要告诉编译器头文件test_lib.h的位置(见包含目录)、引导库位置(见库目录)及其名字(见附加依赖项)

 

2.如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值