- 主题:咨询个 QLibrary 的问题
关键看你在 c++ 里面是怎么声明的。
QLibrary 只给出一个函数指针,类型是 void (*)(void),你需要自己强转一下:
typedef int (WINAPI * MyCallback)(int, int);
MyCallback cb = (MyCallback) library->resolve("callback");
if (cb) {
cb(1,2);
}
EDIT: 之前 WINAPI 的位置写错了,应该写在括号里面。
【 在 dormouseBHU (dormouseBHU) 的大作中提到: 】
: 用 QLibrary 可以动态的加载一个 dll. 然后动态的调用这个 dll 里面的函数。
: 但是 dll 里面的函数会有不同的 Calling convention。比如 __stdcall,__cdecl,__pascal,__fastcall
: 在 Qt 里,我如何指定 Qlibrary 加载的函数指针用哪种 calling convention 调用函数呢。。。
: ...................
--
修改:hgoldfish FROM 117.24.206.*
FROM 112.47.122.*
有完整的测试用例吗?
【 在 dormouseBHU (dormouseBHU) 的大作中提到: 】
: 我也是这么想的,但是编译会报错。。。
: [upload=1][/upload]
--
FROM 112.47.122.*
typedef short (__stdcall * FUNCTION) (int, int);
修饰符写在里面。
【 在 dormouseBHU (dormouseBHU) 的大作中提到: 】
: 下面注释掉的两行都编译通不过。 VS2017.
: #include <QCoreApplication>
: #include <QLibrary>
: ...................
--
修改:hgoldfish FROM 117.24.206.*
FROM 117.24.206.*