2 つの動的ライブラリをロードする必要があり、関数名の競合が 1 つあります。そこで、「objcopy --redefine-sym add=new_add libmy_test.so libmy_test_new.so」というコマンドを使用して、シンボル名を変更します。
しかし、それでも「エラー: ./libmy_test_new.so: 未定義のシンボル: new_add」が報告されます。
以下は私のテストコードです。
void *lib_handle2 = dlopen("./libmy_test_new.so", RTLD_NOW);
if (NULL == lib_handle2) {
printf("Error: %s\n", dlerror());
goto err1;
}
fp_add f_add2 = dlsym(lib_handle2, "new_add");
if (NULL == f_add2) {
printf("Error: %s\n", dlerror());
goto err2;
}