こんにちは、関数を動的にロードして実行しています。コンパイラがスタックを適切にクリーンアップできるように、一般的な戻り値の型を定義できるようにしたいと考えています。現在、バージョン文字列の印刷が意味不明です。
次のコードを機能させるにはどうすればよいですか?
// gcc -o test test.c -ldl
#include <stdio.h>
#include <dlfcn.h>
typedef union { int i; double d; float f; char *p;} anytype;
int main()
{
anytype ver2;
anytype (*f)();
void *handle = dlopen("libz.so.1", RTLD_NOW|RTLD_GLOBAL);
f = dlsym(handle,"zlibVersion");
//const char * zlibVersion (void);
ver2=f();
printf("zlib version %s\n", ver2.p);
dlclose(handle);
return 0;
}