欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

VS2013动态库dll的创建和调用

程序员文章站 2022-07-14 09:30:07
...

一、VS2013动态库文件的创建

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

VS2013动态库dll的创建和调用

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

VS2013动态库dll的创建和调用

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

VS2013动态库dll的创建和调用

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

VS2013动态库dll的创建和调用

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

VS2013动态库dll的创建和调用

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

VS2013动态库dll的创建和调用

7.创建完成如下:

VS2013动态库dll的创建和调用

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

VS2013动态库dll的创建和调用

 

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

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

VS2013动态库dll的创建和调用

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

VS2013动态库dll的创建和调用

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

VS2013动态库dll的创建和调用

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

VS2013动态库dll的创建和调用

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

#include <stdio.h>

int main(void)
{
	test();

	return 0;
}

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

VS2013动态库dll的创建和调用

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

VS2013动态库dll的创建和调用

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

VS2013动态库dll的创建和调用

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

VS2013动态库dll的创建和调用

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

注意:

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

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

VS2013动态库dll的创建和调用

VS2013动态库dll的创建和调用

 

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

相关标签: VS2013 DLL LIB