官方教程:http://wiki.qt.io/How_to_create_a_library_with_Qt_and_use_it_in_an_application

http://qimo601.iteye.com/blog/1397936

在VS2013  QT 中如何创建和引用静态和动态链接库

一、静态库的创建和调用最为简单

1.生成两个文件 qtstaticlib.h qtstaticlib.cpp 直接在函数里面写函数即可

#ifndef QTSTATICLIB_H
#define QTSTATICLIB_H
class QtStaticLib
{
public:
QtStaticLib();
~QtStaticLib();
int add(int a, int b);
private: };
extern "C" int subtract(int a, int b); //普通函数的调用 #endif // QTSTATICLIB_H
#include "qtstaticlib.h"

QtStaticLib::QtStaticLib()
{ } QtStaticLib::~QtStaticLib()
{ }
int QtStaticLib::add(int a, int b){
return a + b;
} int subtract(int a, int b){
return a - b;
}

2.编译生成  QtStaticLib.lib 文件

3.调用 QtStaticLib.lib文件 需要要  qtstaticlib.h 和QtStaticLib.lib 即可

  复制一份 qtstaticlib.h 到要用用的工程的目录下并添加引用,

  qtstaticlib.lib 复制到工程目录下,两种方式添加

    【1.    #pragma comment(lib, "D:/WorkProgram/ComputerManager/x64/Debug/QtStaticLib.lib")  2. 添加库目录,添加库文件的方法】

4.直接使用即可

二、动态链接库的创建和引用

  

  1. stdafx.h 和 stdafx.cpp 没有内容,把qtdlllib_global.h中的内容放到了qtdlllib.h 中了  

    

  2.编写功能函数

   

#ifndef QTDLLLIB_H
#define QTDLLLIB_H #include <QtCore/qglobal.h>
#ifdef QTDLLLIB_LIB
# define QTDLLLIB_EXPORT Q_DECL_EXPORT
#else
# define QTDLLLIB_EXPORT Q_DECL_IMPORT
#endif class QTDLLLIB_EXPORT QtDllLib
{
public:
QtDllLib();
~QtDllLib();
int add(int a, int b); private: };
extern "C" QTDLLLIB_EXPORT int subtract(int a, int b); #endif // QTDLLLIB_H
#include "qtdlllib.h"

QtDllLib::QtDllLib()
{ } QtDllLib::~QtDllLib()
{ }
int QtDllLib::add(int a,int b)
{
return a + b;
}
int subtract(int a, int b){
return a - b;
}

3.编译  预编译头相关错误,就是删除stdafx.h造成的解决方法

4.编译生成 QtDllLib.dll 和 QtDllLib.lib文件

5 应用动态链接库 分为隐式引用和显示引用

  隐式引用,需要文件QtDllLib.dll 和 QtDllLib.lib和 QtDllLib.h (方法和静态链接库相同)

  显示引用:1.引用函数 需要文件QtDllLib.dll 2.引用类 需要文件QtDllLib.dll 和 QtDllLib.h

  引用函数:

  

  引用类:需要在dll类中写一个函数返回  类的实例指针  这样就像调用函数一样  返回一个类的实例指针 来使用

 就是在编写dll的时候添加如下,然后就像调用函数一样,有 返回值 QtDLlLib 是自定义的 所以需要引用头文件。

QtDllLIb* getQtDllLIb()
{
return new QtDllLIb();
}

Qt Library 链接库的更多相关文章

  1. Qt 共享库(动态链接库)和静态链接库的创建及调用

    前言: 编译器 Qt Creator, 系统环境 win7 64 位 1.创建共享库: 新建文件或项目->选择 Library 和 c++ 库->选择共享库->下一步(工程名为 sh ...

  2. Linux下Qt创建共享库与链接共享库详解

    随着程序写的逐渐变多,或多或少的我们都会使用别人写好的库:或者我们不想让别人看到我们的一些核心程序,可以将核心程序封装成库.本次和大家分享的是在Ubuntu下使用Qt生成共享库以及在Qt中链接共享库的 ...

  3. C运行时库(C Run-time Library)详解(提供的另一个最重要的功能是为应用程序添加启动函数。Visual C++对控制台程序默认使用单线程的静态链接库,而MFC中的CFile类已暗藏了多线程)

    一.什么是C运行时库 1)C运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数. 2)C 语言是所谓的“ ...

  4. VC win32 static library静态链接库简单示例

    中午在宿舍闲来没事,看到网上一篇帖子,关于静态链接库的英文示例.它在.Net上开发,我将其移到VC上开发,因此对其代码做了相应修改.帖子内容如下:(代码我已修改).原帖见:http://msdn.mi ...

  5. Qt DLL总结【一】-链接库预备知识

    1.链接库概念 静态链接库和动态链接库介绍 我们可以创建一种文件里面包含了很多函数和变量的目标代码,链接的时候只要把这个文件指示给链接程序就自动地从文件中查找符合要求的函数和变量进行链接,整个查找过程 ...

  6. Qt之创建并使用静态链接库

    1.创建静态链接库 静态库的工程名字 添加包含的模型 更改一下类的名字 我的静态编译库的工程. 写一个简单的静态哭的代码为后面测试静态库使用 cpp代码: #include "staticb ...

  7. QT中静态库的生成与使用

    一. 静态库的生成    1. 测试目录: lib    2. 源码文件名: mywindow.h, mywindow.cpp, 类MyWindow继承于QPushButton, 并将文字设置为&qu ...

  8. QT中共享库的生成与使用

    一. 静态库的生成1. 测试目录: lib2. 源码文件名: mywindow.h, mywindow.cpp, 类MyWindow继承于QPushButton, 并将文字设置为"I'm i ...

  9. QT中静态库的生成与使用——创建共享库代码,附例子

    一. 静态库的生成    1. 测试目录: lib    2. 源码文件名: mywindow.h, mywindow.cpp, 类MyWindow继承于QPushButton, 并将文字设置为&qu ...

随机推荐

  1. ubuntu14.04中解压缩window中的zip文件,文件名乱码的解决方法

    在windows上压缩的文件,是以系统默认编码中文来压缩文件.由于zip文件中没有声明其编码,所以linux上的unzip一般以默认编码解压,中文文件名会出现乱码. 通过unzip行命令解压,指定字符 ...

  2. 一键分享到新浪微博、腾讯微博、搜狐微博、人人网、开心网、百度收藏等js代码大全

    下面给大家一些分享的js代码,只要把代码插入自己的网页中稍微修改一下图片路径就可以用了,好了,废话少说,上代码:  document.writeln("<b>喜欢本文,那就分享到 ...

  3. Android广播机制(转)

    1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...

  4. 小SQL大作用

    从DBA那问来的,备份现有数据库表: create table B select * from A ; 删除,重建数据库主键 alter table book_order drop primary k ...

  5. 5W1H分析法

    "5W1H分析法"也叫"六何分析法",它是一种分析方法也可以说是一种创造技法.是对选定的项目.工序和操作,都要从原因(Why).对象(What).地点(Wher ...

  6. strace基本操作

    可以发现很多真正在系统层面发生的调用,以及很细微的返回错误信息,用于调试工作.(比如,软件出错,或是性能变慢...) strace -p 32000 -o strace.txt 基本上完整的用法是这样 ...

  7. LeetCode_Simplify Path

    Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/", ...

  8. logstash 防止实际处理时间跟事件产生时间略有偏差

    "message" => " 10.168.255.134 [12/Sep/2016:16:30:40 +0800] \"GET /resources/p ...

  9. SQLite-CONSTRAINTS(约束)

    SQLite – CONSTRAINTS(约束) 约束是数据列在表上执行的规则.这些是用来限制的数据类型可以进入一个表.这样可以确保数据的准确性和可靠性在数据库中. 级或表级约束可以列.列级约束是仅适 ...

  10. Hdu1401-Solitaire(双向bfs)

    Solitaire is a game played on a chessboard 8x8. The rows and columns of the chessboard are numbered ...