微信小程序网站建设哪家好,万能短视频素材库免费,wordpress doc 插件,凡客诚品是什么牌子Linux下加载库的问题(dlopenm, dlsym)如题#xff0c; 程序中发现load库成功#xff0c;但是加载函数的时候报错: undefined symbol functionname是很简单的一个东西#xff0c;因为不熟悉#xff0c;所以老是弄不好#xff0c;请各位指导#xff01;代码如下#xff1a…Linux下加载库的问题(dlopenm, dlsym)如题 程序中发现load库成功但是加载函数的时候报错: undefined symbol functionname是很简单的一个东西因为不熟悉所以老是弄不好请各位指导代码如下// SCTLX_DefaultOperationManager.h文件#ifndef__SCTLX_DEFAULTOPERATIONMANAGER_H#define__SCTLX_DEFAULTOPERATIONMANAGER_H/******************************************名称:SCTDefaultOperationManager描述:默认操作功能参数:pszLeft:接口预留nLeft:接口预留pszErrInfo:错误信息返回:0:成功-1:失败******************************************/extern C int SCTDefaultOperation(char* pszLeft, int nLeft, char* pszErrInfo);#endif//__SCTLX_DEFAULTOPERATIONMANAGER_H----------------------------------------------------------------------------------// cpp文件#include stdlib.h#include stdio.h#include string.husing namespace std;int SCTDefaultOperation(char* pszLeft, int nLeft, char* pszErrInfo){charpLeft[1024];intiLeft;charpErrInfo[1024];memset(pLeft, 0x00, 1024);memset(pErrInfo, 0x00, 1024);iLeft 0;memcpy(pLeft, pszLeft, 1024);memcpy(pErrInfo, pszErrInfo, 1024);iLeft nLeft;printf(默认操作: 什么也不做!...\n);return 0;}----------------------------------------------------------/// 主程序...typedefint(*Function)(char* pszLeft, int nLeft, char* pszErrInfo);stringg_strDllList[1024];Functiong_FuncList[1024];void*g_dl[1024];...intiLoadDll(const char* pDllPath){intiDllNo;iDllNo -1;if (pDllPath NULL)return -1;if (strlen(pDllPath) 0)return -1;for (iDllNo0; iDllNo1024; iDllNo){if (g_strDllList[iDllNo].length() ! 0 g_strDllList[iDllNo] pDllPath){printf(lib has been loaded, skipping...\n, pDllPath);return iDllNo;}}for (iDllNo0; iDllNo1024; iDllNo){if (g_dl[iDllNo] NULL){g_dl[iDllNo] dlopen(pDllPath, RTLD_NOW);if (dlerror() ! NULL)return -1;else{printf(load lib successed: %s\n, pDllPath);g_strDllList[iDllNo] pDllPath;return iDllNo;}}}}intiLoadFunc(int iNodeNo, int iDllNo, const char* pFuncName){if (iNodeNo 1024)return -1;if (iDllNo 1024)return -1;if (pFuncName NULL)return -1;if (strlen(pFuncName) 0)return -1;printf(NodeNo: %d, load function: %s\n, iNodeNo, pFuncName);g_FuncList[iNodeNo] (Function)dlsym(g_dl[iDllNo], pFuncName);if (g_FuncList[iNodeNo] NULL){printf(%s\n, dlerror());printf(NodeNo: %d, load function failed!\n, iNodeNo);return -1;}return 0;}------------------------------------------------------------///makefile.PHONY: defaultdefault:g -Wall -W -shared -fPIC -o $(TargetPath)libSCTLX_DefaultOperationManager.so $(DefaultPath)SCTLX_DefaultOperationManager.cpp.PHONY: dpscheckdpscheck:g -ldl -o $(TargetPath)dpscheck SCTLX_Maintain.cpp libini.a网上搜了一些大多是说要加个extern C的。。。。分享到更多------解决方案--------------------你可以去看看gcc和g的区别