実行可能ファイルと[lib*.so]ライブラリを引数として取り、@Run-timeにリンクするコードを作成しました。
(* .o)ファイル@ランタイムの関数も取り込んでリンクしたいと思います。しかし、私はそれについてどうやって行くのか分かりません。
編集1: リンクしようとしている関数は、lib*.soライブラリの.oファイルの一部です。 そこで、ライブラリ名と、同じライブラリにある関数名@Run-Timeを指定したいと思います。
たとえば。ライブラリに2つの関数(つまり* .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);
}