1

我找到了以下用于在 Qt 中加载库的代码,但我不完全理解它是如何工作的。有人可以向我解释:typedef int (*MyPrototype)(int, int);

int r1 = 0;
QLibrary library("mathlib.so");
    if (!library.load())
        out << library.errorString() << endl;
    if (library.load())
        out << "library loaded" << endl;

    typedef int (*MyPrototype)(int, int);

    MyPrototype myFunction = (MyPrototype)library.resolve("add");
    if (myFunction)
        r1 = myFunction(a,b);
    else
        out << library.errorString() << endl;
4

1 回答 1

2

so 或 dll 有函数,我们想使用它,那么我们如何调用它

int add(int in_iParam1, int in_iParam2)

定义函数类型

typedef int (*MyPrototype)(int, int);

在so文件中寻找函数'add'

MyPrototype myFunction = (MyPrototype)library.resolve("add");

使用参数 'a' 和 'b' 调用函数 'add' 并获取结果到 'r1'

r1 = myFunction(a,b);
于 2017-07-16T16:21:54.407 回答