gpt4 book ai didi

c++ - QLibrary 的 resolved 函数只有一个参数?

转载 作者:行者123 更新时间:2023-11-28 08:12:48 25 4
gpt4 key购买 nike

让我们考虑 Qt 文档中的这个片段:

QLibrary myLib("mylib");
typedef void (*MyPrototype)();
MyPrototype myFunction = (MyPrototype) myLib.resolve("mysymbol");
if (myFunction)
myFunction();

这会将一个 .dll 加载到内存中并解析符号“mysymbol”,因此我可以使用“myFunction”。我让它工作到这里。我也可以调用 myFunction(arg_1)。

但是当我调用 myFunction(arg_1, arg_2) 时,我得到一个“函数参数太多”的错误。那么真的只能用 1 个参数调用 myFunction 还是我遗漏了什么?

最佳答案

让我重写 Mat 的评论。我花了几个小时才找到我的问题。

假设dll:

extern "C" __declspec(dllexport) void function1()
{
//code
}
extern "C" __declspec(dllexport) int function2(int arg1)
{
//code
}
extern "C" __declspec(dllexport) char function3(int arg1, int arg2, int arg3)
{
//code
}

实现应该是这样的:

typedef void (*_function1)();
typedef int (*_function2)(int);
typedef char (*_function3)(int, int, int);

QLibrary myLib("mylib");

_function1 function1 = (_function1) myLib.resolve("function1");
_function2 function2 = (_function1) myLib.resolve("function2");
_function3 function3 = (_function1) myLib.resolve("function3");

if (function1 && function2 && function3)
{
//implement them
function1();
int test = function2(123);
char test1 = function3(1, 2, 3);
}

关于c++ - QLibrary 的 resolved 函数只有一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8559712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com