QLibrary 的解析函数只有一个参数?
QLibrary´s resolved function only has one argument?
让我们考虑一下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)时,我得到一个"函数参数太多"错误。所以它真的只可能调用myFunction与1个参数还是有什么我错过了?
让我重写一下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++中有一个"generic"模板参数,该参数可以是非类型模板参数或类型?
- 我怎么能有一个以2D数组为参数的函数,而数组有一个我想更改的参数/维度
- 是否可以有一个模板函数,可以将向量和非向量类型都作为参数
- 此模板函数上的最后一个参数有什么用?
- 对于属性上的 NOTIFY 信号,如果我给它一个参数有什么区别?
- 为什么有一个构造函数同时接受initializer_list和一个参数包
- 如果我有一个将指针变量作为输入的函数,有没有办法将函数作为参数传递
- 为什么一个可变类模板最多只能有一个参数包
- 为什么boost::multi_array的ConstMultiArrayConcept有一个NumDims模板参数?
- 有一个可以是指针类型或非指针类型的模板参数
- 是否有一个WinAPI可以从带有可选空格和其他参数的命令行获取文件名
- C#:Cdecl-DllExport,参数中有一个指向类实例的指针
- 为什么make_unique有一个额外的移动,可以将 std::bind 作为参数的构造函数
- 有形状和圆形类,以及点类.创建将点类作为一个参数的圆时出现分割错误
- 我有一个成员,该成员是指向参数化函数的指针,我可以扩展参数类型吗?
- 当你有一个像 ::lower 这样的参数时,这在C++中是什么意思
- 期望头文件中有一个参数
- 模板类构造函数,在第二个模板中有一个参数引发错误"constant"
- MSB3305:正在处理的COM引用-至少有一个参数不能被运行时封送处理程序封送