第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

還有就是為什么:dlopen()報的錯 ,但是明確的是可以找到SO文件?

還有就是為什么:dlopen()報的錯 ,但是明確的是可以找到SO文件?

拉風的咖菲貓 2022-06-17 18:11:19
#include "stdio.h"#include "stdlib.h"#include "dlfcn.h"int main(void){int (*So)(const char* pszTimestamp, const char* pszSDRType, const char* pszCallID,const char* pszUserNo, const char* pszCallerNo, const char* pszCalledNo,const char* pszOldNumber, const char* pszLocationID, const char* pszField1,const char* pszField2, const char* pszField3, const char* pszField4);const char *errmsg = "";printf("begin!\n");void *SoLib = dlopen("/root/RecordDll//Release/libRecordDll.so", RTLD_LAZY);printf("111");if (NULL == SoLib){printf("222");fprintf(stderr, "Failed to load libRecordDll.so:%s\n", dlerror());return 1;}dlerror();printf("333");*(void **)(&So) = dlsym(SoLib, "GetInfo");printf("444");if (NULL != (errmsg = dlerror())){printf("%s\n", errmsg);return 1;}printf("555");int ret = So("2011-11-11 11:11:11", "8", "11","111", "1111", "11111","111111", "1111111", "1~1~1","2011-11-11 11:11:11~2012-11-11 11:11:11~0~03", "", "");printf("%d", ret);dlclose(SoLib);return 0;}
查看完整描述

2 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

你這段代碼應該沒問題,我那libstdc++試過了,沒錯。
問題應該在你的/root/RecordDll//Release/libRecordDll.so,
這個動態(tài)庫GetInfo函數有bug。指針錯誤或者數據越界。
我這代碼:
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>

int main(void)
{
// /usr/lib/libstdc++.so.6
int (*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;

}

上面代碼跑沒問題的,你的要錯就是在動態(tài)庫本身了。

“還有就是:dlopen()報的錯 ,但是明確的是可以找到SO文件,”

/root/RecordDll//Release/libRecordDll.so

看到了,/RecordDll//Release這中間多了一根右斜桿,路徑錯誤,找到就見鬼了。


查看完整回答
反對 回復 2022-06-20
?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

應該是有個指針指錯了

查看完整回答
反對 回復 2022-06-20
  • 2 回答
  • 0 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號