http://www.nslabs.jp/cygwin-dll.rhtml
foo.c
「__declspec(dllexport)」は不要…と。
#include <stdio.h> void foo() { puts("foo()"); }
「-fPIC」は不要…と。
~/work$ gcc -c foo.c
~/work$ gcc -shared foo.o -o foo.dll
暗黙的リンク
void foo(); int main() { foo(); return 0; }
インポートライブラリは不要…と。
~/work$ gcc bar.c -L. -lfoo -o bar*1
~/work$ ./bar
foo()
暗黙的リンク
void foo(); int main() { foo(); return 0; }
明示的リンク
VCと比較するとわかりやすい。
#include <dlfcn.h> int main() { void (*f)(); void *h = dlopen("foo.dll", RTLD_LAZY); f = (void (*)()) dlsym(h, "foo"); f(); dlclose(f); return 0; }
~/work$ gcc bar.c -o bar
~/work$ ./bar
foo()