Fun1: function(MachineID, User, Password, ProductID: PChar; Year, Month, Day, Days, FirstNumber, Count: Integer): LongBool; stdcall;if Fun1(PChar(Edit1.Text), PChar(Edit2.Text), PChar(Edit3.Text), @ProductID[1], StrToInt(Edit6.Text), StrToInt(Edit7.Text), StrToInt(Edit8.Text), StrToInt(Edit9.Text), StrToInt(Edit5.Text), 100) thenProductID 须在调用前申请一段内存(你可以申请 255 长度的内存)用于存放注册信息,将内存的地址传给该函数,如果函数成功,则此内存处存放着零结尾的字符串就是注册信息,调用者使用完注册信息后应该释放此处内存。 
typedef BOOL (*GETPRODUCTID)(char lpszMachineID, char lpszUser, char lpszPassword, char* pProductID, int Year, int Month, int Day, int Days, int FirstNumber, int Integer);
GETPRODUCTID GetProductID = (GETPRODUCTID)GetProcAddress(hMod, "NewGenerateProductID"); if (!GetProductID)
{
MessageBox(_T("获取函数地址失败,请联系思维空间!"), _T("提示"),  MB_ICONERROR | MB_OK);
return;
}大家帮下忙,下面不会写了.谢谢~

解决方案 »

  1.   

    主要不明白PChar在VC++中是什么类型,数据要怎么传递过去,是不是传指针?
      

  2.   

    PChar对应C++的char *。
    同时提醒你下,你的函数申明前面缺了标准调用约定__stdcall。typedef  __stdcall  BOOL (*GETPRODUCTID)(char lpszMachineID,..)
      

  3.   

    上面的写错,是char * 
      

  4.   

    typedef BOOL (__stdcall* GETPRODUCTID)(char* lpszMachineID, char* lpszUser, char* lpszPassword, char* pProductID, int Year, int Month, int Day, int Days, int FirstNumber, int Integer);
    前三个是char*,__stdcall很重要而且只能放这个位置。