QT 加载.dll不调用解析
QT load .dll not calling resolve
出于某种原因,我可以将我的.dll很好地加载到我的应用程序中,但是当我调用solve函数时,它一直说无法加载函数。
typedef void (*SetKey_func)(const char *, const char *, const char *, const char *);
Crypt::Crypt(QObject *parent) : QObject(parent)
{
}
Crypt::~Crypt()
{
}
void Crypt::LoadCrypt()
{
QString file = QCoreApplication::applicationDirPath() + "/RockBase.dll";
library.setFileName(file);
library.load();
if( !library.isLoaded() )
{
//file not loaded
return;
}
else
{
// file loaded
}
}
然后我的函数 decsetkey 只是在.dll内设置键
void Crypt::DecSetKey()
{
quint8 decKey1[] = { 0x7D, 0x44, 0x01, 0x00, 0x83, 0xEC, 0x24, 0x83, 0x25, 0xB8, 0x8C, 0x4A, 0x0D, 0x56, 0x8B, 0x75 };
quint8 decKey2[] = { 0x1C, 0x8D, 0x1C, 0x57, 0x50, 0xCE, 0xE8, 0x6F, 0x85, 0xFE, 0xFF, 0x8B };
quint8 decKey3[] = { 0x76, 0x0C, 0x50, 0x45, 0x14, 0x83, 0x65, 0xFC, 0x56, 0x50, 0x7D, 0xD1, 0x74, 0x03, 0xB8, 0x43 };
quint8 decKey4[] = { 0x8B, 0x47, 0xDD, 0x6A, 0xE8, 0x14, 0x83, 0xC4, 0xBC, 0xF3, 0x7F, 0x75 };
SetKey_func s_d_func = (SetKey_func)library.resolve( "?SetKey@CCrypto@RockBase@@QAEXPBD000@Z" );
if( s_d_func )
{
//"Successful loading of Decrypt CCrypto::SetKey function."));
s_d_func( 0, (const char*)decKey1, 0, 0 );
s_d_func((const char*)decKey2, 0, 0, 0);
s_d_func(0, (const char*)decKey3, 0, 0);
s_d_func((const char*)decKey4, 0, 0, 0);
}
else
{
//Unable to load Decrypt CCrypto::SetKey function."));
}
}
我在另一个类中调用函数
void patch::readdata()
{
Crypt *cryptinstance = new Crypt(this);
cryptinstance->DecSetKey();
}
我认为指针在我处理它后被破坏了。任何帮助都会有所帮助,感谢您的时间。
从命令行执行dumpbin /exports RockBaseML.dll
。您将看到没有代码尝试搜索的?SetKey@CCrypto@RockBase@@QAEXPBD000@Z
导出函数。 我找到的最接近的是这个集合:
C:UsersjselbieDownloads>dumpbin /exports RockBaseML.dll | findstr /i SetKey
116 73 00004DCF ?SetKey@CAesCrypto@RockBase@@UAEXPBD@Z
117 74 00004F3D ?SetKey@CDesCrypto@RockBase@@UAEXPBD@Z
118 75 00005051 ?SetKey@CRcCrypto@RockBase@@UAEXPBD@Z
119 76 0000525E ?SetKey@CRockCrypto@RockBase@@QAEXPBD000@Z
120 77 000054F2 ?SetKey@CStrmCrypto@RockBase@@UAEXPBD@Z
相关文章:
- 使用动态链接加载程序 <dlfcn.h> 而不是直接函数调用的目的是什么?
- 加载由 MATLAB Coder 生成的带有函数的 DLL,该函数调用外部函数
- Linux c++.在预加载的共享库中定义的基类的崩溃调用函数
- 从动态加载的 dll 内部调用C++函数
- 对外部函数的调用是否强制从内存加载
- 混合延迟 dll 加载和手动调用 LoadLibraryA 是否安全?
- 调用提取重加载器会产生对"运算符"的未定义引用错误>>
- 如何动态加载和调用具有特定于库的类型作为函数参数的符号
- QT 加载.dll不调用解析
- C++调用lua_dostring来加载具有"require('cjson')"的Lua Scrip引发错误:cjson.so:未定义的符号:lua_getfield
- 来自Pascal DLL/SO中的C 加载和调用功能
- 通过在C 中动态加载的LIB分配的基础级指针上调用删除的安全性
- 崩溃:分段故障:增强序列化加载 - 用null调用构造函数
- CoInitialize 尚未被调用 - (从 DirectXTK 加载 gamepad.h,无需库)
- 使用 C++ 和嵌入式单声道调用 C# DLL 时无法加载程序集系统
- C dll由于对未调用的不存在的函数的引用而未加载
- 如何修复C#应用程序中调用C++DLL函数时的上下文加载错误
- 加载cygwin C++dll,调用类函数
- Clr Dll是由测试程序加载的,但不是由调用应用程序加载的
- 通过JNI调用System.loadLibrary()不会加载本机方法