以下の2つのCプログラムがあります。
test2.c
lang
1extern int hoge(int); 2int fuga(int n) { return hoge(n) + 1; }
test1.c
lang
1#include <stdio.h> 2#include <dlfcn.h> 3 4int hoge(int n) { return n + 1; } 5 6int main() 7{ 8 void* h = dlopen("test2.so", RTLD_LAZY); 9 void* fn = dlsym(h, "fuga"); 10 printf("%d\n", ((int(*)(int))fn)(1)); 11 12 return 0; 13} 14
test2.c を共有オブジェクトにコンパイルし、
gcc -o test2.so -shared -fPIC test2.c
test1.c から動的にロードしたいのですが、 Windows 上で test2.c をコンパイルできません (hoge が undefined だと言われてしまう)。Linux 上では問題なく動作します。
なぜこのような違いが起こるのでしょうか、またどのようにすれば解決できるのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。