delphi的dll中函数原形.
function show(str1:PChar;var str2:PChar):integer;StdCall;
VC中调用申明:
 HINSTANCE hDLL;
   ASSERT(NULL != (hDLL = LoadLibrary("Pennis.dll")));
   typedef  int (PASCAL GetPennis)(CString ,CString  , char *);
   GetPennis *pGetPennis;
   pGetPennis=(GetPennis*)GetProcAddress(hDLL, "GetPennis");
   char * c =new char[100];
   char d[100];
   int x=(*pGetPennis)("chen","geg",c);
   Cstring s;
   s.format("%s",c);
   MessageBox(s);
delphi的dll调用成功!
但是在取字符串c时是乱码,不知道是怎么回事?请高手解决!

解决方案 »

  1.   

    老大,你在DELPHI里的原形怎么跟C里的不一致,一个两个参数一个三?DELPHI里第二个参数用VAR(引用)方式很可能不对,因为引用方式就是传址,这么以来就是传的指针的地址了,还有VC里用CSTRING 也不对,应该用char*
      

  2.   

    delphi中PChar对应,VC的char *,而不是CString
      

  3.   

    楼上正解,应该用指针,不能用cstring
      

  4.   

    char 是c类型,应该是通用的,cstring 是vc++里面的!以前在vc中编写动态连接库,都不能用cstring的,否则的话,被其它编译器调用都会出错的!