水木社区手机版
首页
|版面-KDE与Qt编程技术(KDE_Qt)|
新版wap站已上线
返回
1/1
|
转到
主题:咨询个 QLibrary 的问题
楼主
|
dormouseBHU
|
2021-06-13 23:30:28
|
展开
用 QLibrary 可以动态的加载一个 dll. 然后动态的调用这个 dll 里面的函数。
但是 dll 里面的函数会有不同的 Calling convention。比如 __stdcall,__cdecl,__pascal,__fastcall
在 Qt 里,我如何指定 Qlibrary 加载的函数指针用哪种 calling convention 调用函数呢。。。
--
FROM 120.244.156.*
2楼
|
dormouseBHU
|
2021-06-14 08:01:34
|
展开
我也是这么想的,但是编译会报错。。。
【 在 hgoldfish 的大作中提到: 】
: 关键看你在 c++ 里面是怎么声明的。
: QLibrary 只给出一个函数指针,类型是 void (*)(void),你需要自己强转一下:
: typedef WINAPI int (*MyCallback)(int, int);
: ...................
--
FROM 120.244.156.*
5楼
|
dormouseBHU
|
2021-06-14 21:25:21
|
展开
下面注释掉的两行都编译通不过。 VS2017.
#include <QCoreApplication>
#include <QLibrary>
#include <QDebug>
typedef short ( *FUNCTION) (int, int);
//typedef __stdcall short ( *FUNCTION) (int, int);
//typedef __cdecl short ( *FUNCTION) (int, int);
FUNCTION add;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QLibrary myLib("mydll");
myLib.load();
qDebug() << myLib.isLoaded();
add = (FUNCTION) myLib.resolve("Add");
return a.exec();
}
【 在 hgoldfish 的大作中提到: 】
: 有完整的测试用例吗?
:
--
FROM 120.244.156.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版