动态引用DLL的内存访问错误
extern "C" __declspec(dllexport) BOOL __stdcall EncryptFiles(PCHAR,PCHAR,PCHAR);
extern "C" __declspec(dllexport) BOOL __stdcall DecryptFiles(PCHAR,PCHAR,PCHAR);
extern "C" __declspec(dllexport) PCHAR __stdcall EncryptData(PCHAR,PCHAR);
extern "C" __declspec(dllexport) PCHAR __stdcall DecryptData(PCHAR,PCHAR);
extern "C" __declspec(dllexport) AnsiString __stdcall UserGUID(void);
上面是函数库里的原型声明
下面是在工程中的用法
HINSTANCE handle;
FARPROC lpFarProcEncryptFiles,lpFarProcDecryptFiles,lpFarProcEncryptData,lpFarProcDecryptData,lpFarProcUserGUID;
BOOL __stdcall (*lpEncryptFile)(PCHAR,PCHAR,PCHAR);
BOOL __stdcall (*lpDecryptFile)(PCHAR,PCHAR,PCHAR);
PCHAR __stdcall (*lpEncryptData)(PCHAR,PCHAR);
PCHAR __stdcall (*lpDecryptData)(PCHAR,PCHAR);
AnsiString __stdcall (*lpProcUserGUID)(void);
handle = LoadLibrary("Users.DLL");
lpFarProcEncryptFiles=GetProcAddress(handle,"EncryptFiles");
lpFarProcDecryptFiles=GetProcAddress(handle,"DecryptFiles");
lpFarProcEncryptData=GetProcAddress(handle,"EncryptData");
lpFarProcDecryptData=GetProcAddress(handle,"DecryptData");
lpFarProcUserGUID=GetProcAddress(handle,"UserGUID");
lpEncryptFile=(BOOL(__stdcall*)(PCHAR,PCHAR,PCHAR))lpFarProcEncryptFiles;
lpDecryptFile=(BOOL(__stdcall*)(PCHAR,PCHAR,PCHAR))lpFarProcDecryptFiles;
lpEncryptData=(PCHAR(__stdcall*)(PCHAR,PCHAR))lpFarProcEncryptData;
lpDecryptData=(PCHAR(__stdcall*)(PCHAR,PCHAR))lpFarProcDecryptData;
lpProcUserGUID=(AnsiString(__stdcall*)(void))lpFarProcUserGUID;
lpEncryptFile("e.txt","D.txt","Password");
lpDecryptFile("d.txt","es.txt","Password");
在下面出现内存访问错误,为什么?怎样解决,怎样得到函数的返回值
AnsiString Des=lpEncryptData("Source","Password");
AnsiString Src=lpDecryptData(Des.c_str(),"Password");
AnsiString tu=Src;
FreeLibrary(handle);