我在一个DLL中有一个函数的定义是这样的
void funca(char *p)
我在DELPHI中应该怎么调用这个函数呢???
我是这样写的
pstring : string
pstring := 'ok'
funca(@pstirng)
这样可以吗?
如果不行,请哪位大哥告诉我
我今天第一次接触DELPHI
急需要指点
感激不尽!

解决方案 »

  1.   

    pchr :PChar;pchr := PChar('ok');
    funca(pchr)
      

  2.   

    pchr :PChar;
    AllocMem(pchr);//分配内存
    pchr := PChar('ok');
    funca(pchr)
      

  3.   

    执行到AllocMem(pchr);时会报错:
    incompitable types:'cardinal' and 'pansichar'
    这是什么错误??
    我今天刚学DELPHI,不好意思,这种问题也问大家
    但我明天要出东西,所以比较急
      

  4.   

    pChr : array[0..1023] of Char;funca(pChr);一般这种应该还要传个len 。要不怎么知道,填多少?
      

  5.   

    对了注意调用约定,stdCall,还是cdecl以及其他东西。
      

  6.   

    也不行啊
    他会报一个错:
    incompitable types:'array' and 'pointer'
    类型不对吗?
      

  7.   

    是cdecl和stdcall
    在DELPHI里面分别怎样处理???
    我在线等
    谢谢大家的帮助!
      

  8.   

    DLLIMPORT  void  setMyPCName(char *c_name)
    {
    strcpy(pcName, c_name);
    }DLLIMPORT void setMyPCFileList(char **p)
    {
    pPathList=p;
    }DLLIMPORT void stopMyPC( )
    {
    TerminateThread(hControlThread , 0) ;
    TerminateThread(hDataThread , 0);
    TerminateThread(hBrdcstThread , 0);
    }
    DLLIMPORT int startMyPC( )
    {}这是那个几个函数的定义
    那么要怎么样调用呢??
    谢谢了!!!!!!
      

  9.   

    然后是用command prompt 编译的
      

  10.   

    估计是你dll函数写错了,贴出来 看看啦
      

  11.   

    不会的,因为我用VB调用的时候没有错,但现在在DELPHI里调用setMyPCName后就是乱码
    这是怎么回事呢?
    我觉得还是参数的问题,
    可能他给DLL传的是个指针的指针,所以就显示乱码
      

  12.   

    大哥 DLLIMPORT 关键字错误!!!!!!!!!!!!!!
    DLLEXPORT!!!!!!!!!!
      

  13.   

    呵呵 是呀 调用DLL我刚想到的1.被调用方:确定你的DLL有正确的导出函数 如果是vc的话 可以使用dumpbin /exports your.dll 查看
    2.调用方:  动态+静态 加载 暂不区分方式之类的
      为导入函数进行相应的声明 这时候需要注意
    2.1 数据类型的对应
    2.2 调用方式的一致一般来说 都差不多了。。
      

  14.   

    你的DLL调用的时候有没有定义错啊?贴出来看看!
    静态调用:
    function funca(p:pchar):函数返回类型 stdcall;external 'DLL名称';
    是否在同一目录下?
    主要是数据类型的一致性!