???????濪?????:
//test.c
#include "stdio.h"
#include "dlfcn.h"
#define SOFILE "sec.so"
int (*f)();
int main()
{
void *dp;
dp=dlopen(SOFILE??RTLD_LAZY);
f=dlsym(dp??"f");
f();
return 0;
}
????????????????:
????gcc -rdynamic -s -o myapp test.c
????????Z$./myapp
????10
????$
??????????????μ?????????http://blogs.sun.com/lirincy/
???????blogд????????C????C++?????????????£???linux??????
??????????????????£????????????????
????gcc -rdynamic -s -o -ldl myapp test.c
??????????test.c????ü????
????dlclose(dp);
?????????CoreDump??
???????????????????????????????????????C????????extern C??
????????C++??????ε???C????д?????a.lib????ж?????????a.h??????a.h?ж????????:
????int WhyCoding(int a?? float b);
???????????
????/* cpp_a.h */
????extern "C" {
????#include "a.h"
????}
??????
????/* cpp_a.h */
????extern "C" {
????int WhyCoding(int a?? float b); /* ????????е?C???? */
????}
??????????????????extern "C" ??????C??C++??????????????????????????????C????????????????????????????????????????????????????C???????????int a(float x)?????????_a??????????C???????????????ú?????????????????????????????????????????????????C?????????????????C++???????????????????????????????????????????????????????a????????????_a_float???????????????????????????????д?????????????????????C++???????ú?????????????????????????????????????????????????????????????????????????????
?????????????C????C++??????????÷?????????C++????????÷????C???????C?????????extern "C" ???????????????????????£??????C??????????????????????.????????????????C++????????C++???????????extern "C" ????????????C????????????????????????????C++???????C++???????????C???????--????????????C???????????C++???????C????????????????????C????C++???.
????????C++????C??????extern "C" ???????????C++??????????ú?????????????C???????????_a??????_a_float??????ú?????