本帖最后由 sonny37 于 2014-06-06 15:50:55 编辑

解决方案 »

  1.   

    刚搜了一下,也有碰到类似问题的!求大神!http://bbs.csdn.net/topics/80368066 
      

  2.   

    Delphi接口的PChar是什么格式?
    UNICODE UTF-16?
    UTF-8?
    还是ANSI /GBK?我记得老版本的Delphi不能直接编译Unicode[utf-16]字符串的
    估计是这个原因
      

  3.   

    Function readCard (icDev:integer;var cardNo:Pchar;):integer; stdcall;
    对应C++
    typedef int(__stdcall *lpReadCard)(int,wchar_t  **); 
    你这样改下试试
      

  4.   

    ANSI与UNICODE编码问题
    Delphi自D2009开始:Char对应WideChar;
    C++中wchar_t对应Delphi WideChar;
      

  5.   

    typedef int(__stdcall *lpReadCard)(int, char **);HINSTANCE hDll = LoadLibraryA("ABCCard.dll");
    if (hDll != NULL) {
        lpReadCard ReadCard = (lpReadCard)GetProcAddress(hDll, "readCard");
        if (ReadCard != NULL) {
    char *cardNo = NULL;
    int ret = ReadCard((int)icdev, &cardNo);
    MessageBoxA(NULL, cardNo, "info", MB_OK);
    // 这里的 free 只是例子,依赖于 dll 如何分配内存。
    // 或者看 dll 是否提供了释放内存的函数。
    free(cardNo);
    }
    FreeLibrary(hDll);
    }
      

  6.   

    多谢SXJIAKE和bigfog,是自己疏忽了,定义的时候需要char**,非编码格式问题。