Qt Creator创建使用dll
来源:互联网 发布:今日龙虎榜数据 编辑:程序博客网 时间:2024/05/15 08:17
记录个小例子,写一个求和add(int a,int b)的dll
过程:
首先,肯定是先建立一个c++库,QtCreator里新建库,选择C++库
选择需要模块的时候,就把涉及到的模块给勾选上就行了,像本例只需要普通的代码QtCore就行了
最后项目列表里会有有这两个头文件,一个解释文件
为了简化,把addlib_global.h里的关键代码复制到addlib.h里,再把addlib.h里的#inckude即可
addlib_global.h里需要复制的关键代码
然后在addlib.h和addlib.cpp里添加所需要的函数声明和函数解释代码
addlib.h
注意,很多编译出错,是因为没有添加相应的头文件,*.h中运用到了什么模块,就一定要添加对应的头文件!
这个头文件中残留有一个名为Addlib的class类,但是是空的
因为我们只需要一个简单的add()函数,所以不需要复杂的类,我们只需要在class外面定义我们需要的函数即可,这个class无需在意。
其中
4-8行是我们之前从global.h里复制来的关键代码
19行是我们需要自定义的函数
extern "C"告诉编译器,在编译int add()函数的时候,使用C语言的方式编译,因为C++支持函数重载,所以最后生成的函数名是add加上其他字符的函数名,而加上了extern "C"之后,就不会出现这个问题。
ADDLIBSHARED_EXPORT,从我们复制的global.h而来,说明这个int add()是对外提供接口。
addlib.cpp
添加int add的解释函数,注意,class不要修改
到此dll代码完成
编译
如果你是使用点击运行,那么会QtCreator弹出来这个界面
因为我们只有一个对外接口,所以需要特定的参数来执行这个dll
不管它,关闭
我们这时就可以在代码的debug或者release目录找到名为addlib.dll的动态库文件
我们将addlib.dll和自己写的addlib.h头文件复制出来,这就是我们需要的动态库dll
接下来,我们需要测试一下这个dll能不能运行。
重新新建一个普通的Qt项目useadd,useadd项目新建一个main.cpp
让后将之前的addlib.dll和addlib.h两个文件拖到uselib代码目录下,当然你也可以放到特定的位置,不过建议放在项目的根目录下。
我是放在useadd的目录下,也有人喜欢在useadd下新建一个目录专门放dll
把addlib.h添加到该项目内,项目视图如下:
然后我们点开useadd.pro项目配置文件
添加对应的dll文件路径
LIBS += addlib.dll
因为我是把dll放在了根目录下,所以直接添加了文件名即可
如果是放在其他位置,就需要添加绝对路径或者是相对路径
最后,我们编写main.cpp函数
运行,得出正确答案!
PS:如果在运行的时候,控制台提示异常退出。
那么最有可能的是你的dll文件并不是放在代码的根目录下,那么我们需要把dll复制到根目录下或者是生成exe的debug或者release目录下再运行即可。
0 0
- Qt Creator创建使用dll
- Linux/Ubuntu上使用Qt Creator创建非Qt项目
- Linux/Ubuntu上使用Qt Creator创建非Qt项目
- creator/QT入门 & QT Creator 使用
- QT Creator使用共享库(一)创建共享库
- QT creator创建的界面被VS2010使用
- Qt Creator使用UI图形界面创建的QSlider的办法
- 【ARM】Ubuntu下使用Qt Creator创建交叉编译项目
- 【ARM】Ubuntu下使用Qt Creator创建交叉编译项目
- Qt creator使用心得
- Qt Creator 使用技巧
- Qt Creator 使用
- Qt Creator 使用技巧
- QT—Creator使用
- qt creator使用技巧
- Qt creator 的使用
- qt creator 使用
- Qt creator 使用pkgconfig
- 转码乱码的问题
- UIScrollView在storyboard中设置不能响应滚动
- xcode快捷键
- solr4.9 拼音检索
- 标准C++中的string类的用法总结
- Qt Creator创建使用dll
- EAS工作流审批信息查询
- win7平台安装mongodb时,如何删除已存在的MongoDB服务
- 性能优化之TraceView
- 用unbuntu 搭建私有云
- Mapreduce计算框架涉及的技术(1)-从单节点单进程到多节点多进程
- WEB集群与负载均衡
- HTML标签列表(按照功能分类)
- File/Directory Permission in Unix/Linux