LINUX 环境下 调用动态库 出现segmentation fault 异常 请高手解答!

LINUX 环境下 调用动态库 出现segmentation fault 异常 请高手解答!,第1张

你这段代码应该没问题,我那libstdc++试过了,没错。问题应该在你的/root/RecordDll//Release/libRecordDll.so,这个动态库GetInfo函数有bug。指针错误或者数据越界。我这代码:#include <stdio.h>#include <stdlib.h>#include <dlfcn.h>int main(void){///usr/lib/libstdc++.so.6int (*mygetchar)(void) const char *errmsg = "" printf("begin!\n") void *SoLib = dlopen("/usr/lib/libstdc++.so.6", RTLD_LAZY) printf("111\n") if (NULL == SoLib){printf("222\n") fprintf(stderr, "Failed to load libstdc++.so.6:%s\n", dlerror()) return 1 }dlerror() printf("333\n") *(void **)(&mygetchar) = dlsym(SoLib, "getchar")//printf("444\n") if (NULL != (errmsg = dlerror())){printf("%s\n", errmsg) return 1 }printf("555\n") int ret = mygetchar() printf("%d\n", ret) dlclose(SoLib) return 0}上面代码跑没问题的,你的要错就是在动态库本身了。 “还有就是:dlopen()报的错 ,但是明确的是可以找到SO文件,”/root/RecordDll//Release/libRecordDll.so看到了,/RecordDll//Release这中间多了一根右斜杆,路径错误,找到就见鬼了。

C++强类型转换...可以简单的如下处理:

typedef void (*pFun)(int a[],int n)

pFun fun=(pFun)dlsym(pdHandle,"sort")

直接赋值是通不过的...


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8594879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存