dynamic library@MacOS

| | コメント(0) | トラックバック(0)

何となく最近プログラミングしたい。
とりあえず、MacOSで何か作ろうと思っていろいろ調査したりしている。

dlopen()で、Dynamic Libraryを使う方法。
モジュール用にこんなん書いてみる。hoi.cとして保存。


#include

void 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

% ./main

hoi

いやー、単なる現実逃避。報告書めんどくせー。

トラックバック(0)

このブログ記事を参照しているブログ一覧: dynamic library@MacOS

このブログ記事に対するトラックバックURL: http://www.imaq.net/cgi-bin/mt/mt-tb.cgi/666

コメントする

このブログ記事について

このページは、ImaQが2010年3月 4日 02:22に書いたブログ記事です。

ひとつ前のブログ記事は「ひらパー」です。

次のブログ記事は「3年ぶり3度目」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01