我已经写了一个代码,其中的可执行文件和[lib * .so]库作为我的参数和link @ Run-time。C(lib * .so)库中的动态链接
我也想参加的功能的(*的.o)文件@运行时间,并将其链接。 但我不知道如何去做。
编辑1: 我试图链接的函数是lib * .so库中.o文件的一部分。 所以我想指定库名称以及同一个库@ 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);
}
该代码看起来很不错,那么究竟发生了什么?什么不工作?你是如何编译并链接你的libXXX.so的? – nos 2010-10-02 13:18:43
@nos - 这工作正常。但我想知道如何在编译时加入函数。 – Pavitar 2010-10-02 13:25:53