精华内容
下载资源
问答
  • vs添加dll动态库的方法

    千次阅读 2021-12-15 10:01:17
    一、VS添加LIb及头文件(外部依赖项)的步骤: 1、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。 2、添加文件引用的lib静态路径:工程---属性---配置...

    无论是设置DLL目录,或者是Lib目录,亦或是头文件的目录,都有release版本和debug版本的区分,每种版本的设置都是独立的,要分别设置。

    一、VS中添加LIb库及头文件(外部依赖项)的步骤:

     1、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。

     2、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。

        然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。

     3、添加工程引用的dll动态库:把引用的dll放到工程的可执行文件所在的目录下。

    这种方法比较繁琐,且不直观,而且还可能要争对debug版本和release版本作不同的配置,因为我们生成的两个版本的库可能放在不同的目录中的.

    通过添加系统变量的方法来做,但可以采取以下的方法:

    点击”解决方案资源管理器”->右键项目->属性->调试。双击”环境”,弹出对话框,输入path=XXX/opencv/build/x64/vc14/bin/;

    参考:


    原文链接:https://blog.csdn.net/u013352076/article/details/102953920

    展开全文
  • 在使用Qt开发过程中,我们有时需要使用Qt创建动态库,通常情况下创建的动态库没有版本号,为了方便追综版本,需要为动态库添加版本号,这样方便代码的版本控制,那么如何操作了,只需要在Qt的工程文件中(.pro)添加...

    在使用Qt开发过程中,我们有时需要使用Qt创建动态库,通常情况下创建的动态库没有版本号,为了方便追综版本,需要为动态库也添加版本号,这样方便代码的版本控制,那么如何操作了,只需要在Qt的工程文件中(.pro)添加这个字段即可VERSION = 5.5.0但这样创建的动态库会在生成的动态库名称上把主版本也加上去,如mydemo5.dll,那么如何创建mydemo.dll的动态库并带版本号呢,其实添加VERSION后会生成资源文件mydemo_resource.rc,在这个资源文件里改版本号即可,如果添加了这个资源文件RC_FILE += mydemo_resource.rc,这个时候就不用再添加VERSION这个字段了,具体操作代码如下:

    按这个步骤,填写相关名字,生成动态库工程

     添加代码,mydemo.pro工程文件

    QT -= gui
    
    
    TARGET = mydemo #动态库名称
    TEMPLATE = lib
    win32: CONFIG += c++11
    else: macos:CONFIG += c++11 staticlib
    DESTDIR = ../bin
    #VERSION = 5.5.0   #生成mydemo_resource.rc文件,但这样生成的动态库会加上主版本号,即mydemo5.dll
    
    DEFINES += MYDEMO_LIBRARY
    
    #应用程序调用动态库方式 LIBS += -L$$DESTDIR -lmydemo
    
    win32{ # windows 支持
        #动态库的名称由mydemo_resource.rc文件内容控制
        RC_FILE += mydemo_resource.rc
    }
    
    # The following define makes your compiler emit warnings if you use
    # any Qt feature that has been marked deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS
    
    # You can also make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    SOURCES += \
        mydemo.cpp
    
    HEADERS += \
        mydemo_global.h \
        mydemo.h
    
    # Default rules for deployment.
    unix {
        target.path = /usr/lib
    }
    !isEmpty(target.path): INSTALLS += target
    

     mydemo_resource.rc文件

    #include <windows.h>
    
    VS_VERSION_INFO VERSIONINFO
    	FILEVERSION 5,5,0,3518
    	PRODUCTVERSION 5,5,0,3518
    	FILEFLAGSMASK 0x3fL
    #ifdef _DEBUG
    	FILEFLAGS VS_FF_DEBUG
    #else
    	FILEFLAGS 0x0L
    #endif
    	FILEOS VOS__WINDOWS32
    	FILETYPE VFT_DLL
    	FILESUBTYPE 0x0L
    	BEGIN
    		BLOCK "StringFileInfo"
    		BEGIN
    			BLOCK "040904b0"
    			BEGIN
    				VALUE "CompanyName", "\0"
    				VALUE "FileDescription", "\0"
    				VALUE "FileVersion", "5.5.0.3518\0"
    				VALUE "LegalCopyright", "\0"
    				VALUE "OriginalFilename", "mydemo.dll\0"
    				VALUE "ProductName", "mydemo\0"
    				VALUE "ProductVersion", "5.5.0.3518\0"
    			END
    		END
    		BLOCK "VarFileInfo"
    		BEGIN
    			VALUE "Translation", 0x0409, 1200
    		END
    	END
    /* End of Version info */
    
    

    mydemo_global.h文件

    #ifndef MYDEMO_GLOBAL_H
    #define MYDEMO_GLOBAL_H
    
    #include <QtCore/qglobal.h>
    
    #if defined(MYDEMO_LIBRARY)
    #  define MYDEMO_EXPORT Q_DECL_EXPORT
    #else
    #  define MYDEMO_EXPORT Q_DECL_IMPORT
    #endif
    
    #endif // MYDEMO_GLOBAL_H

    mydemo.h文件

    #ifndef MYDEMO_H
    #define MYDEMO_H
    
    #include "mydemo_global.h"
    #include <QObject>
    #include <QDebug>
    #include <QString>
    
    class MYDEMO_EXPORT Mydemo
    {
        //Q_OBJECT
    
    public:
        Mydemo();
    
    
        QString getBuildCpuArchitecture();
        QString getCurrentCpuArchitecture();
        QString getKernelType();
        QString getKernelVersion();
        QString getMachineHostName();
        QString getPrettyProductName();
        QString getProductType();
        QString getProductVersion();
    
    };
    
    #endif // MYDEMO_H
    

     mydemo.cpp文件

    #include "mydemo.h"
    #include <QSysInfo>
    
    Mydemo::Mydemo()
    {
    }
    
    
    QString Mydemo::getBuildCpuArchitecture()
    {
        return QSysInfo::buildCpuArchitecture();
    }
    
    QString Mydemo::getCurrentCpuArchitecture()
    {
        return QSysInfo::currentCpuArchitecture();
    }
    
    QString Mydemo::getKernelType()
    {
        return QSysInfo::kernelType();
    }
    
    QString Mydemo::getKernelVersion()
    {
        return QSysInfo::kernelVersion();
    }
    
    QString Mydemo::getMachineHostName()
    {
        return QSysInfo::machineHostName();
    }
    
    QString Mydemo::getPrettyProductName()
    {
        return QSysInfo::prettyProductName();
    }
    
    
    QString Mydemo::getProductType()
    {
        return QSysInfo::productType();
    }
    
    QString Mydemo::getProductVersion()
    {
        return QSysInfo::productVersion();
    }
    

     测试工程QtCallQtCustomDll.pro

    QT       += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    CONFIG += c++11
    
    DESTDIR = ../bin
    
    VERSION = 5.5.0
    
    LIBS += -L$$DESTDIR -lmydemo
    
    # The following define makes your compiler emit warnings if you use
    # any Qt feature that has been marked deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS
    
    # You can also make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    SOURCES += \
        main.cpp \
        mainwindow.cpp
    
    HEADERS += \
        mainwindow.h
    
    FORMS += \
        mainwindow.ui
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    

    mainwindow.h文件

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    public slots:
        void slotShowSystemInfo();
    
    private:
        Ui::MainWindow *ui;
    };
    #endif // MAINWINDOW_H
    

    mainwindow.cpp文件

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include "../mydemo/mydemo.h"
    #include <QDebug>
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        connect(ui->pushButton_showSysInfo, SIGNAL(clicked()), this, SLOT(slotShowSystemInfo()));
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::slotShowSystemInfo()
    {
        qDebug() << "slotShowSystemInfo=========================";
        Mydemo mydemo;
        QString buildCpuArchitecture = mydemo.getBuildCpuArchitecture();
        QString currentCpuArchitecture = mydemo.getCurrentCpuArchitecture();
        QString kernelType = mydemo.getKernelType();
        QString kernelVersion = mydemo.getKernelVersion();
        QString machineHostName = mydemo.getMachineHostName();
        QString prettyProductName = mydemo.getPrettyProductName();
        QString productType = mydemo.getProductType();
        QString productVersion = mydemo.getProductVersion();
        ui->lineEdit_BuildCpuArchitecture->setText(buildCpuArchitecture);
        ui->lineEdit_CurrentCpuArchitecture->setText(currentCpuArchitecture);
        ui->lineEdit_KernelType->setText(kernelType);
        ui->lineEdit_KernelVersion->setText(kernelVersion);
        ui->lineEdit_MachineHostName->setText(machineHostName);
        ui->lineEdit_PrettyProductName->setText(prettyProductName);
        ui->lineEdit_ProductType->setText(productType);
        ui->lineEdit_ProductVersion->setText(productVersion);
    }
    
    

    main.cpp文件

    #include "mainwindow.h"
    
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
        return a.exec();
    }
    

    测试结果:

    展开全文
  • 生成DLL ... 添加.def文件,导出函数MyAdd ...调用动态库的几种方式 直接用LoadLibrary函数加载。 #include #include <windows.h> #include using namespace std; typedef int (*lpAddFunc)(int

    生成DLL

    新建空项目,选择动态链接库(DLL),然后下一步填写项目名称,然后点击创建。
    在这里插入图片描述
    在这里插入图片描述
    添加.def文件,导出函数MyAdd
    在这里插入图片描述
    在工程配置->链接器->输入->模块定义文件里填写 def文件名(否则dll不会有导出函数的信息)。
    在这里插入图片描述

    调用动态库的几种方式

    1. 直接用LoadLibrary函数加载。
      #include
      #include <windows.h>
      #include

    using namespace std;

    typedef int (*lpAddFunc)(int a, int b);

    int main()
    {
    int c = 0;
    HMODULE hmodule = LoadLibrary(L"CPPDLL.dll");
    if (hmodule == NULL)
    {
    cout << “load library error” << endl;
    return -1;
    }
    lpAddFunc addFunc = (lpAddFunc)GetProcAddress(hmodule, “MyAdd”);
    if (addFunc == NULL)
    {
    cout << “GetProcAddress MyAdd error” << endl;
    goto cleanup;
    }

    c = addFunc(1, 2);
    cout << c << endl;
    cout << “Hello World!\n”;
    cleanup:
    FreeLibrary(hmodule);
    getchar();
    return 1;
    }

    1. 用lib文件和dll文件
      2.1 首先要在配置文件中添加包含目录
      在这里插入图片描述
      2.2 添加依赖项 lib文件(lib文件中含有一些函数信息,但是没有实现,只能让编译通过,exe运行还是需要dll文件,windows和linux的lib文件里的东西不一样,linux的lib含有所有信息),
      在这里插入图片描述
      2.3 添加lib库所在的目录。
      在这里插入图片描述

    2.4 把相应版本的dll文件拷贝到exe生成的目录(vs默认是先查找当前exe所在的目录,一般大项目都是这样放,不会去配置里设置什么动态库的路径)
    在这里插入图片描述

    调用代码如下
    #include
    #include <windows.h>
    #include “CPP_DLL.h”

    using namespace std;

    int main()
    {
    int c = MyAdd(1, 2);
    cout << c << endl;
    getchar();
    return 1;
    }

    1. 用#pragma comment (lib,“CPPDLL.lib”)
      把这一步替代上面2.2这一步,并且在代码中添加如下
      #include
      #include <windows.h>
      #include “CPP_DLL.h”
      #pragma comment (lib,“CPPDLL.lib”)

    using namespace std;

    int main()
    {
    int c = MyAdd(1, 2);
    cout << c << endl;
    getchar();
    return 1;
    }

    展开全文
  • Qt添加动态库

    2021-01-02 15:25:20
    2 在 /etc/ld.so.conf 文件中添加动态库的目录 如: cat "/tr/lib" >> /etc/ld.so.conf 添加完毕后执行命令:ldconfig,但可能会出现这样的错误: ... /sbin/ldconfig.real: /tr/lib/libcublas.

    1 在.pro文件中添加路径

    在.pro文件中指定头文件的包含目录和动态库的地址,如:

    INCLUDEPATH += /tr/include
    LIBS += /tr/lib/libpycotchpred.so
    

    2 在 /etc/ld.so.conf 文件中添加动态库的目录

    如:

    cat "/tr/lib" >> /etc/ld.so.conf
    

    添加完毕后执行命令:ldconfig,但可能会出现这样的错误:

    ...
    /sbin/ldconfig.real: /tr/lib/libcublas.so.10.0 不是符号连接
    /sbin/ldconfig.real: /tr/lib/libnvjpeg.so.10.0 不是符号连接
    /sbin/ldconfig.real: /tr/lib/libopencv_core.so.3.4 不是符号连接
    ....
    

    此时,需要对这些文件创建软链接,比如对上面的 libcublas.so.10.0 文件,在它的同级目录下会有另一个文件 libcublas.so.10.0.130 ,我们需要创建软链接使 libcublas.so.10.0 指向 libcublas.so.10.0.130,命令如下:

    ln -sf libcublas.so.10.0.130 libcublas.so.10.0
    
    展开全文
  • VS2019 提供了三种创建动态库的模式,如下图所示: 具有到处项的DLL动态链接库:会自动生成头文件 动态链接库DLL:只生成Dll文件 嵌入了基础类库 二、编写动态库 2.1 创建动态库 选择“具有导出项的(DLL)动态链接...
  • qt 添加和使用动态库

    2021-03-25 17:03:06
    右键选择添加动态库,选择lib文件夹下的.dll动态库,根据平台选择windows .添加后的结果如下: 注意:这里也可以手动添加.lib和.h的路径。 3. 在源文件中的引用: 在include 文件夹中存在.h文件 qmqttclie...
  • VS2019动态库生成

    2021-08-31 08:36:50
    另建新项目,添加主函数,并将主函数需要的头文件导入,并引入动态库生成的lib文件。注意:动态库接口对应的.h文件可以使用前面生成动态库所使用的pch.h(pch.h中的#include "framework.h"注释掉)或者使用自己的...
  • QT添加库(静态库和动态库) 添加动态库的方法:** 就是把所有需要的dll库全部放到exe所在文件夹,和exe处于同一级目录下。 添加静态库的方法: 1.右键项目文件,点击添加库
  • 头文件添加方法:工程---属性---配置属性---c/c++---常规---附加包含目录(Additional Include Directories):加上头文件存放目录。注意:(1)路径必须指向...静态库添加方法:添加文件引用的lib静态路径:工程--.
  • vs2019创建dll动态库并调用 一.创建动态库 1.新建dll动态库项目 2.配置动态库 3.创建成功后添加头文件 4.添加头文件 4.1创建自己的dll头文件 4.2编辑头文件 5.创建cpp文件 5.1创建helloworld.cpp 5.2创建myadd...
  • 最近需要将Windows10系统下使用VS2017编译的VC++项目放到CentOS Linux服务器上跑,最简单的当然是使用cmake作为项目编译和管理工具了,这样就不需要写makefile了,使用cmake管理编译项目相对来说比较简单。...
  • 创建动态链接路径配置文件 sudo gedit /etc/ld.so.conf.d/[配置文件名].conf 添加动态链接文件夹路径到配置文件中,保存 更新 sudo ldconfig
  • 我们在用到别人的库的时候会去引用别人提供的动态库和头文件,这时候我们要在linux中指定头文件的路径和动态库的路径。 添加方法 添加头文件路径 一,在工作目录下的.bashrc下添加路径 C_INCLUDE_PATH=$C_INCLUDE_...
  • C#添加动态链接

    2020-12-22 09:52:34
    怎么添加动态链接 第一步 - 创建一个类库: 2. 第二步 到解决方案资源管理器里面右键解决方案点击生成 ![在这里插入图片描述]...
  • 1.将py 移入python所在文件夹。 我的是C:\Users\22198\AppData\Local\Programs\Python\Python39\Lib\site-packages 前面可能不同,但是后面的一般相同。 2、打开cmd切换到目前文件夹 命令是:cd C:\Users\22198...
  • VS2019制作动态库和静态库及使用 1. 静态库的制作及调用 1)打开VS软件,创建一个新项目,选择静态库。 然后在软件自动创建好的函数中,我们打印一句话,并在头文件上添加函数声明,这样我们就可以把头文件以及lib...
  • 01.头文件路径的设置 首先鼠标右键工程–>属性–>配置属性–>选择C/C+±->常规–>附加包含目录–>编辑–>...把动态库文件直接添加到该工程下的可执行目录下,或是直接把库文件放下
  • VS生成和使用动态库(.dll) 生成动态库 1、在包含需要导出的接口或者类的头文件中,添加如下代码: #ifdef EXPORT_OUT #define EXPORT_API __declspec(dllexport) #else #define EXPORT_API __declspec(dllimport) ...
  • VS2017+QT生成动态库(DLL)并完成调用

    千次阅读 2021-05-21 18:02:02
    一、环境介绍 QT版本: 5.12.6 VS版本: 2017 二、功能介绍 在VS2017环境下创建QT工程,并生成DLL库;...Window系统下QT5创建DLL动态库并完成调用:https://blog.csdn.net/xiaolong1126626497/ar...
  • 如编译后安装在/usr/local/aarch64_qt5.12.0 下:1、设置动态库链接配置如果不设置动态库连接,系统就找不到需要的*.so,导致软件执行失败。可以ldd一下,如:pi@NanoPi-NEO-Plus2:~$ldduntitledlinux-vdso.so.1=>...
  • QT添加外部动态库

    2021-11-25 16:50:01
    动态库debug文件夹中的.a和.dll拷贝下来 在window中 .dll 动态库 .lib 静态库 在linux中 .so 动态库 .a 静态库 在根目录下新建include,并放入其中 同样的把头文件也放入include中 然后右键项目,添加库 ...
  • 一个动态库项目程序 一个使用动态库的项目程序 这里我的动态库中简单的写了一个加法运算的函数,供别人使用。 一、创建动态库 创建成功后的目录结构如下 新建一个class文件编写函数代码 这里我添加了...
  • 使用VS2017项目模板创建C++动态库生成工程,生成动态库。然后再创建一个C++工程调用动态库完成测试。 三、创建动态库 工程创建之后,VS会自动生成一个示例模板;下面截图里是将VS自动生成的模板代码给删除掉了,...
  • 一、静态库 静态库的使用需要(1).h头文件;(2).lib静态库文件; 1、静态库生成 (1)项目-右键属性-常规-配置类型-选静态库; ... (1)新建一个测试项目,将生成的funAdd....动态库的使用需要(1).h头文件;(...
  • 添加动态库:如:lipsap.so (不需要添加路径) LIBS+=-L$$PWD/…l (指定库的名称) (熟悉Linux语言的知道,PWD是当前路径的意思) 添加静态库:(修改一下)如:halcon.a win32:LIBS+=-LPWD/lib....../−lhalcon(不用...
  • ...public class encryptByDES { 天涯博主添加: 这个类存在于D:\java开发\wordspace\ccWorkTools\classes\ctest目录中 那么在dos中生成头文件的时候输入 第一步:C:\Documents and Settings\Administrator>d: 第二...
  • ZC: 我这里创建的是 不依赖 Qt的 动态链接。1、创建动态链接工程(工程名为 “SharedLibZ”)Qt5 --> File... --> New File or Project ... --> 选择 "Libraries"的"C++ Library" --> Type:"Shared ...
  • 当编译一个需要第三方的项目时,需要知道:去哪找头文件(.h),-I(GCC)INCLUDE_DIRECTORIES()去哪找文件(.so/.dll/.lib/.dylib/...),-L(GCC)LINK_DIRECTORIES()需要链接的文件的名字:-l(GCC)LINK_LIBRARIES...
  • VS+QT创建带UI动态库在团队使用QT中比较好用,踩了几个坑后总结了 VS2017+QT5.4.1创建带UI动态库 方法,已供学习交流。 使用环境 使用环境 ,VS2017 + QT5.4.1 创建过程 创建QtClassLibrary 选择添加Qt...
  • Qt加载动态链接

    2020-12-20 18:00:48
    先制作个简单的动态链接,再在Qt里面加载它。【制作动态链接】先编写一个hello.c1 #include 2 inthello()3 {4 printf("hello world!\n");5 }在Linux下编译,生成hello.o:gcc -c hello.c编译成动态链接...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 459,072
精华内容 183,628
关键字:

vs添加动态库