在动态链接库下声明为
int APIENTRY EncryptV1(char* pDataIn, char* pDataOut);
的函数,用LoadLibrary加载动态链接库,调用EncryptV1的函数声明该怎么写?按照动态链接库里的声明编译通不过:-(
int APIENTRY EncryptV1(char* pDataIn, char* pDataOut);
的函数,用LoadLibrary加载动态链接库,调用EncryptV1的函数声明该怎么写?按照动态链接库里的声明编译通不过:-(
int APIENTRY (*EncryptV1Func)(unsigned char*, unsigned int, unsigned char*, unsigned int);
编译不能通过,声明成:
int (*EncryptV1Func)(unsigned char*, unsigned int, unsigned char*, unsigned int);
调用又有问题。我该怎么办?
int APIENTRY EncryptV1(char* pDataIn, char* pDataOut);
编译不能通过,声明成:
int EncryptV1(char* pDataIn, char* pDataOut);
调用又有问题。
HINSTANCE hinstLib;
MYPROC ProcAdd;
hinstLib = LoadLibrary(TEXT("your.dll"));
if (hinstLib != NULL)
{
ProcAdd = (MYPROC) GetProcAddress(hinstLib, TEXT("EncryptV1"));
if (NULL != ProcAdd)
{
// 下面的 32 是我随意设的, 按你程序中的要求来定, 也可动态申请内存
TCHAR pDataOut[32] = {0};
const TCHAR pDataIn = _T("in");
(ProcAdd) (pDataIn, pDataOut);
}
}
int (*EncryptV1)(char*, char*) = GetProcAddress(hinstLib, TEXT("EncryptV1"));
调用 EncryptV1(pDataIn, pDataOut); 后栈被破坏了,因为原函数声明是带 APIENTRY 的。
Thank you, crumpy! :-)