Qt 加载动态库DLL
来源:互联网 发布:怎么遍历json数组 编辑:程序博客网 时间:2024/05/16 23:38
1. 首先生成DLL,或者有现成的。
#ifndef TEST_H#define TEST_H#include "test_global.h"#include <QString>#include <iostream>
/* 在Windows上,还必须使用__declspec(dllexport)编译器指令从DLL显式导出该函数 */#ifdef Q_OS_WIN#define MY_EXPORT __declspec(dllexport)#else#define MY_EXPORT#endifextern "C"{void hello(void *in, void *out);}#endif // TEST_H#include "test.h"MY_EXPORT void hello(void *in, void *out){ memcpy((char *)out, (char *)in, 512);}
2.调用代码
#include "mainwindow.h"#include <QApplication>#include <QLibrary>#include <QDebug>typedef int (__stdcall *lib_form)(void *, void *); //声明一个函数类型lib_form dll_hello;bool LoadDll(){ QString input = "hello!"; QString out = ""; char outbuf[512] = {0}; /* 获取路径 */ QString DllPath = "C:/Users/flysea/Documents/test5/MyDebug/test5"; /* 加载函数 */ QLibrary Lib; Lib.setFileName(DllPath); if(!Lib.load()) { qDebug() << "Load fail"; return false; } dll_hello = (lib_form)Lib.resolve("hello"); if(!dll_hello) { qDebug() << "Lib resolve fail"; return false; } /* 执行 */ QByteArray pInput = input.toUtf8(); dll_hello(pInput.data(), outbuf); out = QString::fromLocal8Bit(outbuf); //返回值->转换字符格式 qDebug() << out; return true;}int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); LoadDll(); return a.exec();}
阅读全文
0 0
- Qt 加载动态库DLL
- Qt 动态加载 dll
- qt动态加载dll
- QT 动态加载dll
- Qt 动态加载 dll 【开源中国】
- 详解 Qt 下 QLibrary 动态加载 dll
- Qt下QLibrary动态加载dll
- 详解 Qt 下 QLibrary 动态加载 dll
- Qt 下 QLibrary 动态加载 dll
- 动态库dll加载
- QT 加载动态库
- Qt动态库加载
- QT加载动态库
- Qt加载动态库
- Qt动态加载动态库
- qt使用动态库(DLL)
- qt使用动态库(DLL)
- qt 动态链接库dll
- 面试题7:用两个栈实现队列
- 关于地理数据坐标转换
- TimerTask定时执行删除文件
- 将myeclipse的控制台固定住
- pagehelper插件使用时查询不到数据
- Qt 加载动态库DLL
- @JSONField 注解说明
- java中的 string 类型转成 数组
- 从Java到Kotlin
- nginx端口问题
- list array相互之间转换(算法题常用到)
- JAVA 使用插入语句插入记录
- Android五大组件-Service
- 如何对应用进行Android系统签名和常用adb命令总结