官方教程: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. “Win”组合键

    Windows组合键功能: 单独按下显示或隐藏 [开始] 功能表. +Break 显示 [系统内容] 对话方块. +D 显示桌面. +M 最小化所有的视窗. +Shift+M 还原最小化的视窗. +E ...

  2. ssh-agent自启动加key脚本

    公司使用到阿里云. 需要使用 ssh-agent forward 来跳转.为了方便自己就写了这个脚本 1 #!/bin/sh 2 # auto start ssh-agent and add key ...

  3. 利用JS实现HTML TABLE的分页

    有时候table的列数太长,不利于使用者查询,所以利用JS做了一个table的分页,以下为相关代码 一.JS代码 <script type="text/javascript" ...

  4. win32下用VC扩展PHP全过程

    闲着无聊,打算开发一些PHP组件来玩玩,由于在家没有工作环境,遂打算在win32(我的环境是vista)用VC开发DLL模块,费话不 多说了,进入正题: 一.已经在机器上安装PHP环境的就略过,否则先 ...

  5. 深入理解Azure自动扩展集VMSS(2)

    VMSS中Auto Scale基本原理及诊断 在前面的介绍中,我们看到通过定义规则可以实现虚拟机扩展集的auto scale,那么在后台执行上VMSS的扩展依赖于哪些组件,出现问题(比如自动扩展没有发 ...

  6. 如何在Latex上裁减图片

    在Latex的使用过程中,很多人需要载入一些具有一定白边或者边框的图片.特别是用matlab生成的很多图片.大部分人的做法是通过使用pdf工具去裁减.这样做很麻烦,并且对于一些批量的,大小相同的图片而 ...

  7. 【转】嵌入式Linux学习笔记

    一  嵌入式系统定义: 应用于特定环境的硬件体系. 二  两样非常重要的能力: 1.  掌握各种新概念的能力 2.  调试的能力( 包括软件, 硬件 ) 三  需要的基础知识: 1.  操作系统理论基 ...

  8. Java面试题之十

    五十六.java中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 主要有字节流,字符流.字节流继承于InputStream .OutputStream,字符流 ...

  9. java设计模式--行为型模式--策略模式

    策略模式: 策略模式 概述 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化. 适用性 1.许多相关的类仅仅是行为有异.“策略”提供了一种用多个行 ...

  10. bst 二叉搜索树简单实现

    //数组实现二叉树: // 1.下标为零的元素为根节点,没有父节点 // 2.节点i的左儿子是2*i+1:右儿子2*i+2:父节点(i-1)/2: // 3.下标i为奇数则该节点有有兄弟,否则又左兄弟 ...