VC2010 加载DLL动态链接库(.h/.lib/.dll)

DLL 文章列表

 动态链接库项目的创建:      

导出类的写法

  1. 当你把VC++项目设置为DLL项目的时候,项目会自动定义一个宏(在C++/Preprocessor里):项目名__EXPORTS。例如:COMMUNICATER_103_EXPORTS
  2. 使用用上面的宏定义导出符号:
#ifndef COMMUNICATER_H   
#define COMMUNICATER_H   
  
//#include "ace/ACE_export.h"   
  
#ifdef COMMUNICATER_EXPORTS   
#define COMMUNICATER_API __declspec(dllexport)    
#else   
#define COMMUNICATER_API __declspec(dllimport)    
#endif   
  
class COMMUNICATER_API Communicater  
{  
public:  
     Communicater(void);  
     virtual void run_collect() = 0;  
     virtual ~Communicater(void);  
};  
  
#endif  

 

动态链接库的加载三部曲

1   加载头文件 "fun.h"目录

附加路径:C/C++ -> General -> Additional Include Directories设置相对路径。

比如:    ../Include

注意: 相对路径添加资源文件:相对路径的起点是项目文件夹(即source file的路径即.vcxproj所在路径)

代码写成:#include "file.h"

常用的路径包括:$(SolutionDir)

此宏定义包含了路径末尾的“\”,所以你一般会写:$(SolutionDir)lib\ (注意第一个路径之间没有\分隔符,但第二个有)

2  添加库文件 lib

2.1 lib文件目录

配置属性》链接器》常规》附件库目录》添加$(ACE_ROOT)/lib

2.2 lib文件

“右键项目名”--properties(或者点击菜单:“project”--“properties”)--"configurationg and properties"--”linker“--”input“--"additional dependencies" 输入lib文件全名fun.lib,这是为了让编译器构建项目时链接dll用于引导使用

3 加载动态链接库文件

"fun.dll"

此文件和fun.lib放到同一个目录里即可。

注意:因为dll,lib文件可以是不同的编译器版本制作出来的,在运行时要求也不同。有些功能只需要1(boost中的lexical库等,因为这些库的实现就在源代码里面);有些需要2(比如boost中的regex等,这些库要求必须只用编译之后的lib库),有些库需要1、2、3(比如ACE、pocketSphinx,因为每次都使用编译器重新编译到代码中太浪费时间了。所以就编译好了包含lib,dll即可)

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

C++程序员Carea

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

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

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

打赏作者

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

抵扣说明:

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

余额充值