我需要从另一个程序调用一个函数.如果其他程序是库,我可以简单地使用dlopen和dlsym来获取函数的句柄.不幸的是,其他程序是Unix可执行程序,并且将其构建为库不是一种选择.在可执行文件上尝试dlopen()会显示以下错误消息:
dlopen([...]/testprogram, 1): no suitable image found. Did find:
[...]/testprogram: can't map
这并不奇怪,因为dlopen用于库,而不是可执行文件.有没有办法让dlopen和dlsym使用可执行文件?如果没有,是否有另一种方法可以达到同样的目的?
我有一个主要功能如下:
#include <stdio.h>
int main(int argc, char *argv[])
{
int i, sum = 0;
char *func_user = argv[1];
// execute func_user function
return 0;
}
void foo1(void)
{
printf("I'm foo1.");
}
void foo2(void)
{
printf("I'm foo2.");
}
void foo3(void)
{
printf("I'm foo3.");
}
Run Code Online (Sandbox Code Playgroud)
我希望用户将他的函数名称作为main的参数,我希望我的程序执行这个给定的函数.有没有办法做这个(比如使用反射)而不使用switch/case方法?