跳转到帖子
登录关注  
墨香年少

Qt使用windows.h加载dll

已推荐帖子

下面的代码是我用Qt加载JsPrinterDll.dll的代码

.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QLibrary>
#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

//出票机dll方法
typedef int (_stdcall *puniOpenUsb)();

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    //初始化出票机
    void init_printer();

private:
    Ui::MainWindow *ui;

    //出票机相关方法
    bool PrintDllLoad = false; //加载状态
    int printConnect = 0; //连接状态
    puniOpenUsb uniOpenUsb = NULL;
};
#endif // MAINWINDOW_H

.cpp

#pragma execution_character_set("utf-8")
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QDebug>
#include "Windows.h"

MainWindow::MainWindow(QWidget *parent):QMainWindow(parent),ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setStyleSheet("font-family: \"Microsoft Yahei\";");

    //初始化出票机
    this->init_printer();
}

//初始化出票机
void MainWindow::init_printer()
{
    HINSTANCE JsPrinterDll = LoadLibraryA("JsPrinterDll");
    if(JsPrinterDll)
    {
        qDebug() << "出票机dll加载......OK";
        PrintDllLoad = true;

        uniOpenUsb = (puniOpenUsb)GetProcAddress(JsPrinterDll, "uniOpenUsb");

        printConnect = uniOpenUsb();
        if(printConnect >= 1)
        {
            qDebug() << "出票机连接......OK";
        }
        else
        {
            qDebug() << "出票机连接失败!状态码:" << printConnect;
        }
    }
    else
    {
        PrintDllLoad = false;
        uniOpenUsb = NULL;
        printConnect = 0;
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

输出:

出票机dll加载......OK
出票机连接......OK

 


目之所及,皆是回忆,心之所想,皆是过往

分享这篇帖子


链接帖子
分享到其他站点

创建帐户或登录来提出意见

你需要成为会员才能提出意见

创建帐户

注册成为会员。只要几个简单步骤!

注册帐户

登录

已有帐户? 请登录。

现在登录
登录关注  

×
×
  • 创建新的...

重要信息

注册必须使用2-8个中文汉字作为账号