上面写得有点问题,其实就是把so换成dll。另外我还需要在LINUX下的KYLIX中进行相应的工作,因此请哪位如果懂的话,指教一二吧。
谢谢!!!

解决方案 »

  1.   

    你在C中是不是stdcall啊?如果不是的话在Delphi中要用cdecl.
      

  2.   

    是这样的,这个用标准C写的DLL其实运行在LINUX下,我不知道在LINUX编译环境中能不能使用STDCALL,当然我会试试看的。我想知道的是,如果我用VC写标准C的动态链接库,如果写成
    char* GetString(int n , char buf[])
    或者另外一个
    int GetValue(int n , char buf[])  //buf是传出的,这在DELPHI中又要怎么定义 呢,
    是不是写成
    function GetString(n:integer ; buf :pchar):pchar ;cdecl; external '/mypath/test.so';
    就可以了呢?
      

  3.   

    我改用cdecl了,但是没有用啊,仍然会出错,现在关键的问题就是在于传出与返回字符串有问题,其他例如传入字符串进行处理,以及返回整型数等都没有问题了,字符串的问题非常麻烦。
    在标准C的函数定义里,char buf[]好呢,还是char* buf好。我觉得好象有点不同。
    我的DLL中调用成功的函数例子是
      int printUPPERCASE(char inLine[])
    然后我在DELPHI中这样声明
    function printUPPERCASE(inLine : pChar) : integer ; external "/mypath/test.so"
    这个函数调用可以成功,我可以正确地传入字符串,并且返回整型数。就是字符串返回与传出没有办法。
    希望高手能够鼎力相助