这是我的C类的一个赋值,它应该是动态库中的一个练习 . 我想出了如何做大部分工作,但我坚持到最后一步 .

基本上,我从指定的文件中获得一个函数,我可以使用dlsym调用它 . 但是,参数的数量和类型可以根据功能而变化 . 我通过argv []给出缩短的函数签名和参数本身 . 像printf('Hello:%s,%d,%f',abc,10,12.4)这样的函数的缩短函数签名将如下所示:

vccid {这是 v oid func的缩写( c har *, c har *, i nt, d ouble)}

例如,如果我需要调用描述的printf函数,我的argv将如下所示:

[],[功能所在的文件名],[功能名称],[ vccid ],['Hello: %s, %d, %f'],[abc],[10],[12.4]

我使用dlopen和dlsym来获取函数本身

typedef void *(*arbitrary1)();
...
int main(int argc, const char * argv[]) {
arbitrary1 f1;
void *handle = dlopen(argv[1], RTLD_LAZY);
*(void**)f1 = dlsym(handle, argv[2]);
...
}

现在,我的问题是:有没有办法将我从argv获得的参数传递给我的函数调用?所以最终结果将是

f1('Hello: %s %d %f', abc, 10, 12.4);

预先感谢您的帮助