在php.ini里引入
有些extension不能dl的

解决方案 »

  1.   

    谢谢两位1)在php.ini里有弄过,但有出错提示:英文意思大概为,这个dll文件不为“php的dll”文件。。2)我也用过regsvr32,但提示:
    abc.dll was loaded,but the DllRegisterServer entry point was not found.DllRegisterServer may not be exported,or a corrupt version of abc.dll may be in memory.Consider using PView to detect and remove it.不知如何处理??
      

  2.   

    PHP的DLL是专门编写出来的,你可以到ZEND网站上去看一看.
    他给你的这个DLL,一般情况下只能在像DELPHI,C++之类的编程工具中调用.
      

  3.   

    如果不是php专门的extension,那就麻烦了。
      

  4.   

    见手册!CLI. W32api 函数
    简介
    本扩展库是用于连接 DLL 的通用扩展 API。它最初是用来允许从 PHP 中访问 Win32 API,不过也可以访问通过其它 DLL 导出的其它函数。 目前支持的有 PHP 的标准类型(string,boolean,float,integer 和 null)以及用 w32api_deftype() 函数所自定义的类型。 注: 本扩展已被移动到 PECL 库中且自以下版本起不再被绑定到 PHP 中:5.1.0。 
    警告 
    本扩展模块是实验性的。本模块的行为,包括其函数的名称以及其它任何关于此模块的文档可能会在没有通知的情况下随 PHP 以后的发布而改变。使用本扩展模块风险自担。
     需求
    本扩展只能工作在 Windows 系统中。 
      

  5.   

    电信给的一般是普通的DLL,或者COM。而不是ext
      

  6.   

    2)我也用过regsvr32,但提示:
    abc.dll was loaded,but the DllRegisterServer entry point was not found.DllRegisterServer may not be exported,or a corrupt version of abc.dll may be in memory.Consider using PView to detect and remove it.
    --------------------------------------------------------------
    我觉得这是dll的问题吧,它没有提供入口啊!
      

  7.   

    你使用vc/delphi之类的重新再写一个支持php的dll, 这个dll调用电信给你的dll.
      

  8.   

    谢谢各位。
      
      请问有没有哪位用php开发过短讯相关的系统的啊。。
    请相助。。!!
      

  9.   

    根据xuzuning(唠叨) 的说法,我用dl()载入此win32api动态链接库文件时,一样会出现dl()函数不支持多线程web服务器的提示,后来在php.ini里把php_win32api.dll载入,载入后我运行了此动态链接库里的其中一个函数,但提示些函数没有定义的情况??(w32api_register_function)
      

  10.   

    1、是的,不能用dl函数动态加载的
    2、用print_r(get_extension_funcs("w32api"));查看都支持哪些函数
      手册上的表述已经过时了,仅供参考
      

  11.   

    哦,我看过了,打印不出任何结果,就是说w32api扩展里所含的function一个都没有吧。。这次真是难搞了
      

  12.   

    同意heiyeshuwu(黑夜路人)兄的观点,应该再写一个dll来封装这个。
      

  13.   

    我只会写php,与asp的web程序啊,
    其他的桌面语言就不会了。搞一个有发短信功能的站点有这么复杂吗?
      

  14.   

    给个示例你看看
    function send_sms_shmc($EnterpriseID,$LicenseKey,$AccountID,$MPS,$Message){
    /***************************** 
    功能: 上海移动提供的COM接口发送短信1, EMASendMsg
    interface: IEMASendMsg
    properties: EnterpriseID(BSTR) 企业代码(必须为5位数字),读写
                LicenseKey(BSTR) 授权密码,读写
        AccountID(BSTR) 企业用户帐号(必须为3位数字,如果没有子账号填000),读写
    method: AddMobile(BSTR) 添加一个发送手机号码(必须为135-139开头的11位数字)
            Send(BSTR, BSTR*) 发送短信息(第一个参数为短信内容,第二个参数为返回的messageID(多个ID用;隔开))
    ClearMobiles() 清除所有添加的发送手机号码HRESULT 0x800700F0 身份验证失败
    HRESULT 0x800700F1 与服务器连接通信失败(可能服务器超时断开连接)
    HRESULT 0x800700F2 非法的输入参数*******************************/
    $EnterpriseID  = '00000';
    $LicenseKey  = '0000';
    $AccountID  = '000';
    $res = '';
    $myCom=new COM("EMA_API.EMASendMsg.1");
    $myCom->EnterpriseID = $EnterpriseID;
    $myCom->LicenseKey = $LicenseKey;
    $myCom->AccountID = $AccountID;
    for($i=0;$i<count($MPS);$i++){
    $myCom->AddMobile($MPS[$i]);
    }
    @ $res = $myCom->Send($Message);
    $myCom->ClearMobiles();
    return $res;
    }
    EMA_API这个dll必须先注册到系统