VS下的动态库建立与应用

VS下的动态库建立与应用

本篇笔记记录VS下建立动态库工程,并链接到应用工程的过程。并用纯C++实现代码,可以跨平台使用。

一、         创建一个Win32控制台程序(MyDLL),选择DLL动态库。

二、         将工程中的有关Windows的内容删掉。比如:stafy.h(.cpp),target.h等。

三、         将dllmain文件删除,只留下MyDll.cpp文件。添加一个新建项MyDll.h文件。

四、         在MyDll.h文件中添加如下代码:相当于定义了一个函数声明的导出宏,声明了一个接口函数。为适应Linux平台,加入了dllexport.h文件。此处注意MYDLL_EXPORTS很关键,格式一定为NAME_EXPORTS.不然报错“不允许dllimport函数定义”。

#ifdef _MYDLL_H

#endif _MYDLL_H

#include "dllexport.h"

 

#ifdef MYDLL_EXPORTS

#define MYDLL_API __declspec(dllexport)

#else

#define MYDLL_API __declspec(dllimport)

#endif

 

MYDLL_API int myFunc(void);

 

#endif

五、         在MyDll.cpp中定义一个接口函数。

#include "mydll.h"

 

MYDLL_API int myFunc(void)

{

   printf("hi,Linux!\r\n");

   return 0;

}

六、         新建一个应用的工程。同样为Win32控制台程序(TestDLL),同样做无Windows代码处理。

#include <stdio.h>

#include "mydll.h"

 

int main(int argc, char* argv[])

{

   printf("hello,Linux!\r\n");

   myFunc();

   return 0;

}

七、         将动态库工程的内部文件夹(除去sln、ncb文件等)复制到TestDLL文件夹下(与sln文件同级)。

八、         在TestDLL工程下的solution中添加一个现有工程。添加MyDLL。

九、         对MyDLL工程属性做些设置:

1.       由于删掉了stdfy.h,因此需要设置不需要预编译头;


2.       由于加入了dllexport.h文件,需要添加其目录。在工程文件下(sln同级)新建一个文件夹Include,里面新建一个dllexport.h文件。在设置中的C++/常规/附加包含目录中添加../Include。


3.       在Release配置下重复上面操作。至此,程序可以在Debug和Release下编译通过。

十、         对TestDLL主工程进行相关设置:

1.       同样设置不使用预编译头;

2.       在.cpp中添加#include "mydll.h"因此需要在设置中添加其目录。将mydll.h文件拷贝至Include文件中。同样设置C++/常规/附加包含目录中添加../Include。

3.       在cpp中调用接口函数。因此需将库文件链接到工程中。链接/输入/附加依赖项。添加Lib文件的目录:链接器/常规/附加库目录。对应的debug下添加../debug; Release下添加../Release。也可新建一个Lib文件夹放该lib文件,但是要在MyDLL下设置输出目录。


十一、  将两个工程关联起来。将TestDLL作为启动工程,将MyDLL作为附属工程。右键->项目依赖项,勾选MydLL。

十二、  在Release下编译,执行不调试:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bjtuwayne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值