//dll.c
#include<stdio.h>
void myprint(char *a)
{
printf(a);
}
编译生成dll.so动态链接库文件:
#gcc -o dll.so -shared dll.c
//main.c
#include<dlfcn.h>
int main()
{
void *pHandler = dlopen("./dll.so" ,RTLD_NOW);
if(!pHandler) {
printf("%s\n",dlerror());
exit(1);
}
char * error;
typedef void * (*myprint)();
myprint pfGetInterface;
pfGetInterface = (myprint)dlsym(pHandler,"myprint");
error = dlerror();
if(error) {
printf("%s\n",error);
exit(1);
}
pfGetInterface("hello");
}
编译生成a.out:
#gcc -rdynamic -ldl main.c
#include<stdio.h>
void myprint(char *a)
{
printf(a);
}
编译生成dll.so动态链接库文件:
#gcc -o dll.so -shared dll.c
//main.c
#include<dlfcn.h>
int main()
{
void *pHandler = dlopen("./dll.so" ,RTLD_NOW);
if(!pHandler) {
printf("%s\n",dlerror());
exit(1);
}
char * error;
typedef void * (*myprint)();
myprint pfGetInterface;
pfGetInterface = (myprint)dlsym(pHandler,"myprint");
error = dlerror();
if(error) {
printf("%s\n",error);
exit(1);
}
pfGetInterface("hello");
}
编译生成a.out:
#gcc -rdynamic -ldl main.c
DLL动态链接库实践
本文通过具体示例展示了如何使用GCC编译器创建一个简单的动态链接库(DLL),并介绍了如何在主程序中加载和调用DLL中的函数。示例包括了DLL的编译过程及主程序中对DLL函数的调用。
2942

被折叠的 条评论
为什么被折叠?



