16,818
社区成员




QLibrary *crypto_lib = NULL;
//加载动态库
//注意库要给路径否则加载不成功,libhello.so放在当前工程的目录下,所以路径为./
crypto_lib = new QLibrary("Aes_Crypto");
crypto_lib->load();
crypto_lib->isLibrary(QString("Aes_Crypto"));
qDebug()<<"the value of crypto_lib->isLibrary"<<crypto_lib->isLibrary;
qDebug()<<"the value of crypto_lib->isLoaded() is:"<< crypto_lib->isLoaded();
if (crypto_lib->isLoaded())
{
qDebug()<<"Succeed";
typedef int (*Fun)(int,char *,char *,char *);//定义函数指针
Fun test = (Fun)crypto_lib->resolve("Aes_Crypto");
,int Aes_Crypto(int argc,char *L_Src,char *L_TargetEnc,char *L_TargetDec)
。你的库函数有没有导出呢?
用 nm -D t.so 或 readelf -Ws t.so 看看符号是不是被导出了 --- 题外:为什么不直接链接这个库,而是使用这种显式调用呢
你这个so是C的库还是C++的库?
#include <QtGui>
#include<QLibrary>
#include "listwidget.h"
#include "newfolderdialog.h"
#include"loadlib.h"
extern "C"
{
#include"loadlib.h"
}
,我的loadlib.h中的代码是:
#ifndef LOADLIB_H
#define LOADLIB_H
/***********************
*定义引入加密库的头文件
*/
int Aes_Crypto(int argc,char *L_Src,char *L_TargetEnc,char *L_TargetDec);//
int AesEncryptFile (char *szSrc,char *szTarget ,unsigned char *key,int iType);//
int AesDecryptFile (char * szSrc, char * szTarget ,unsigned char * key,int iType);//
#endif // LOADLIB_H
if(test)
{
//Aes_Crypto();
qDebug() << "To test is"<<test;
}
else qDebug() << "To test is Failed"<<test;
}
一直返回false啊。。
求帮助。。