dynamic library@MacOS
何となく最近プログラミングしたい。
とりあえず、MacOSで何か作ろうと思っていろいろ調査したりしている。
dlopen()で、Dynamic Libraryを使う方法。
モジュール用にこんなん書いてみる。hoi.cとして保存。
#includevoid hoi(void)
{
printf("hoi!\n");
}
呼び出し側としてこんなん書いてみる。main.cとして保存。
#include#include void (*hp)(void);
int main(int argc, char **argv)
{
void *p = dlopen("hoi.so", RTLD_NOW | RTLD_LOCAL);
if(p == NULL){
fprintf(stderr, "hoi.so: %s\n", dlerror());
exit(1);
}hp = (void (*)(void))dlsym(p, "hoi");
if(!hp){
fprintf(stderr, "hoi: %s\n", dlerror());
exit(1);
}hp();
dlclose(p);
return 0;
}
モジュールhoi.soのコンパイル (-archはユニバーサルバイナリを指定)
% gcc -arch i386 -arch ppc -arch x86_64 -fno-common hoi.c
% gcc -arch i386 -arch ppc -arch x86_64 -bundle -flat_namespace -undefined suppress -o hoi.so hoi.o
呼び出し側
% gcc -arch i386 -arch ppc -arch x86_64 main.c -o main -ldl
% ./mainhoi
いやー、単なる現実逃避。報告書めんどくせー。
トラックバック(0)
このブログ記事を参照しているブログ一覧: dynamic library@MacOS
このブログ記事に対するトラックバックURL: http://www.imaq.net/cgi-bin/mt/mt-tb.cgi/666

コメントする