<?php
$dw = new COM("DynamicWrapper") or die("创建COM失败");//$oldDir="D:\IncrementUpdate\oldVersion";
//$oldLen =29;
//$newDir ="D:\IncrementUpdate\newVersion";
//$newLen =29;
//$infoDir ="D:\IncrementUpdate\diffAPK";
//$infoLen =26;//$obj = new COM("UpdateM.update_maker"); die("shb");
$dw->Register("UpdateM.dll", "update_maker","i=slslsl","f=s", "r=l" );
$ch = $dw->update_maker("D:\IncrementUpdate\oldVersion",29,"D:\IncrementUpdate\newVersion",29,"D:\IncrementUpdate\diffAPK",26);
// public native static int update_maker($oldDir,$oldLen,$newDir, $newLen,$infoDir,$infoLen);?>
Fatal error: Uncaught exception 'com_exception' with message 'Error [0x80070057] ²ÎÊý´íÎó¡£ ' in C:\AppServ\www\ireadygo_boss\apk\apkzip.php:14 Stack trace: #0 C:\AppServ\www\ireadygo_boss\apk\apkzip.php(14): com->Register('UpdateM.dll', 'update_maker', 'i=slslsl', 'f=s', 'r=l') #1 {main} thrown in C:\AppServ\www\ireadygo_boss\apk\apkzip.php on line 14

解决方案 »

  1.   

    我是按这个方式写的 $dw = new COM("DynamicWrapper") or die("创建COM失败");
    $sReturnedString=new VARIANT(sprintf("%1024s", " "));
    $dwBSTRAddr=$dw->GetBSTRAddr($sReturnedString);
    $dw->Register("DLL名称.dll", "方法名", "i=参数类型个数", "f=s", "r=返回类型");
    //如果返回string的话需要用BSTR和MemInBSTR方法
    $t = $dw->方法名($dwBSTRAddr);
    //dwBSTRAddr 根据内存指针转换为值
    $name=$dw->GetMemInBSTRAddr($dwBSTRAddr, $nOffset, 0); 
      

  2.   

    DLL需要符合规范,不是所有DLL都能被加载。