博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dll的使用
阅读量:6179 次
发布时间:2019-06-21

本文共 1688 字,大约阅读时间需要 5 分钟。

      2016-12-11   23:02:24

      

一:生成DLL

1:创建DLL工程

      文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以)

      填写项目名称MyDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。

      到这里DLL工程就创建完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。

      MyDLL.cpp内容如下:

#include
using namespace std; #include "MyDLL.h" int Add(int &a,int &b) { return a+b;}

 MyDLL.h内容如下:  (有的可能没有lib文件生成)

extern "C" __declspec(dllexport) int Add(int &a,int &b);

 

在C++程序中使用刚才生成的DLL文件步骤:

新建一个win32 控制台工程,取名testMyDLL,新建两个文件:testMyDLL.cpp和testMyDLL.h,

首先需要 隐式链接采用静态加载的方式,比较简单,需要.h、.lib、.dll三件套。新建“控制台应用程序”或“空项目”。配置如下:(这一点非常重要)“三部曲”

 项目->属性->配置属性->VC++ 目录-> 在“包含目录”里添加头文件MyDLL.h所在的目录 

项目->属性->配置属性->VC++ 目录-> 在“库目录”里添加头文件MyDLL.lib所在的目录 

项目->属性->配置属性->链接器->输入-> 在“附加依赖项”里添加“MyDLL.lib”(若有多个 lib 则以空格隔开)

testMyDLL.cpp内容如下:

#include  using namespace std;  int main() {     int a =3;     int b =2;     cout<
<

testMyDLL.h:

extern "C" _declspec(dllexport) int Add(int &a, int &b);

 现在可以编译通过了,但是程序运行就报错,还需要将MyDLL.dll复制到当前项目生成的可执行文件所在的目录。(这一点非常重要)  否则缺少dll文件/

注意:如果只有dll文件,那么必须在程序里面调用LoadLibrary()函数才能使用,如果有lib文件,那么有两种方式可以马上进行调用

(1). Dependencies (推荐使用,要求有lib源代码)

   一个项目被分成多个工程来做,一个主工程exe,其他为静态库lib

    Project-->dependencies,设置主工程的依赖为其他静态库lib

    这时,主工程的Resource Files中自动添加了lib

    在主工程中需要用到其他库的位置加入库的头文件

(2). 直接将lib添加到需要用的工程中(不太推荐,lib没能统一管理)

    提供了lib和其头文件

    选择工程-->右键-->Add Files to Project

    这时,主工程的Resource Files中自动添加了lib

    在主工程中需要用到其他库的位置加入库的头文件

(3).  通过工程的Link设置(推荐,lib可以统一管理)

     提供了lib和其头文件

     Project-->settings-->Link,选择Categery中的Input

     在object/library modules里输入的动态链接库对应的.lib文件名

     在Additional library path中输入动态链接库对应的.lib的路径

     在主工程中需要用到其他库的位置加入库的头文件

(4).  #pragma (lib, "filename.lilb")(不太推荐,lib没能统一管理)

      提供了lib和其头文件

      在主工程中需要用到其他库的位置加入#pragma (lib, "filename.lilb")

      在主工程中需要用到其他库的位置加入库的头文件:

 

 

 

 参考:  

           

 

转载地址:http://wowda.baihongyu.com/

你可能感兴趣的文章
步调一致才能得胜利
查看>>
mysql 锁机制
查看>>
add_header X-Frame-Options "SAMEORIGIN";NGINX
查看>>
linux中的计划任务
查看>>
Android style报错
查看>>
Lintcode130 Heapify solution 题解
查看>>
【Map】Map、HashMap
查看>>
解决纯数字字符串在js方法参数中不稳定或被截取的问题
查看>>
如何在VMware安装Windows系统
查看>>
阶段性理解phantomjs/selenium/casperjs
查看>>
Java中高级开发工程师是什么技术水平(附28套Java进阶+高级视频教程)
查看>>
sudo命令
查看>>
第十九章 文本处理流编辑器:awk编程
查看>>
Xtrabackup+Rsync 备份数据库并同步到远端备份机
查看>>
activiti实战读书笔记——第九章 多实例
查看>>
php返回相对时间(如:20分钟前,3天前)的方法
查看>>
WilliamChart各种图表效果实现大全《IT蓝豹》
查看>>
shell脚本——linux主机监控
查看>>
eclipse配置jsp页面模板
查看>>
基于高德地图写的不同功能的地图应用
查看>>