在动态链接库下声明为
int APIENTRY EncryptV1(char* pDataIn, char* pDataOut);
的函数,用LoadLibrary加载动态链接库,调用EncryptV1的函数声明该怎么写?按照动态链接库里的声明编译通不过:-(

解决方案 »

  1.   

    声明成:
    int APIENTRY (*EncryptV1Func)(unsigned char*, unsigned int, unsigned char*, unsigned int);
    编译不能通过,声明成:
    int (*EncryptV1Func)(unsigned char*, unsigned int, unsigned char*, unsigned int);
    调用又有问题。我该怎么办?
      

  2.   

    拷贝错了,是声明成:
    int APIENTRY EncryptV1(char* pDataIn, char* pDataOut);
    编译不能通过,声明成:
    int EncryptV1(char* pDataIn, char* pDataOut);
    调用又有问题。
      

  3.   

    typedef int (*MYPROC)(char*, char*);
    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); 
        }
    }
      

  4.   

    我声明:
    int (*EncryptV1)(char*, char*) = GetProcAddress(hinstLib, TEXT("EncryptV1"));
    调用 EncryptV1(pDataIn, pDataOut); 后栈被破坏了,因为原函数声明是带 APIENTRY 的。
      

  5.   

    int (APIENTRY *EncryptV1)(char*, char*);
      

  6.   

    就是它了!
    Thank you, crumpy! :-)