Я написал код, в котором бы в качестве аргументов использовалась исполняемый файл и библиотека [lib * .so]. Ссылка @ Run-time.
Я также хочу взять функцию в файле (* .o) @ run-time и связать ее .Но я не знаю, как это сделать.
РЕДАКТИРОВАТЬ 1: Функция, которую я пытаюсь связать, является частью файла .o в библиотеке lib * .so, Итак, я хочу указать имя библиотеки, а также имя функции, которая находится в той же библиотеке @ Run-Time.
Например,Если моя библиотека содержит две функции (т.е. файлы * .o), компоновщик должен скомпилировать функцию, которую я хочу использовать @ Run-Time.
Я отправил код, пожалуйста, помогите:
#include <stdio.h>
#include <unistd.h>
#include <dlfcn.h> // use -ldl
typedef float (*DepFn)(short, short);
int main(int argc, char* argv[])
{
void* lib;
DepFn df;
if(argc < 2)
return printf("USAGE: %s lib-file\n", argv[0]);
lib = dlopen(argv[1], RTLD_NOW);
if(lib == NULL)
return printf("ERROR: Cannot load library\n");
df = dlsym(lib, "Depreciation");
if(df)
{
short l, i;
printf("Enter useful-life of asset: ");
scanf("%hd", &l);
for(i = 1; i <= l; i++)
{
float d = 100 * df(l, i);
printf("%hd\t%.1f%%\n", i, d);
}
}
else
printf("ERROR: Invalid library\n");
dlclose(lib);
}