PHP COM işlevi yapı [0x80070057] parametresi yanlış Hatası veriyor döndürür

1 Cevap php

Ben PHP özel bir COM DLL işlevini Size() aramaya çalışıyorum. Bu işlev PHP o işlevini çağırdığınızda ancak ben hata şu olsun (sol üst, alt, sağ) 4 üyesi ile bir yapı dönmek gerekir:

Error [0x80070057] The parameter is incorrect.

Ben bunu herhangi bir parametreyi geçemiyor ve özelliklerine göre herhangi bir parametre olsun ama bir yapı dönmek gerekir.

Ben başarıyla aynı COM DLL diğer COM işlevleri çağırmak mümkün değilim.

I com_print_typeinfo() PHP PHP düşünüyor görebilirsiniz ararsanız aşağıdaki gibi fonksiyon tanımlanır:

function Size( ) { } /* DISPID=3 */

Ben VS 2005 yılında tlb dosyasını açarsanız olarak gösterir

Function Size() As TBoxRect

Ve TBoxRect sadece olması gerektiği gibi 4 üye ile bir yapı olduğunu göstermektedir.

Yani PHP işlevi doğru olan hiçbir şey verdiğini düşünüyor. Nasıl COM kullanarak PHP bir yapı çalışmalarını dönmelidir bu işlevi yapabilir?

1 Cevap

PHP yalnızca OLE otomasyon uyumlu türleri ifade edebilir; "COM" (kötü) bir yanlış isim olduğunu, bu gerçekten bir "OLE Otomasyonu" uzantısıdır.

Sizin TBoxRect hiçbir IDispatch veya değişken gösterimi olan bir C yapı türüdür, bu yüzden PHP bu tür harita olamaz.

Eğer Yerine TBoxRect kullanmak için ıdispatch uygulayan bir sarıcı türü yaparsanız, daha fazla şans olacaktır.

Bu COM DLL yazarı değilseniz, o zaman TBoxRect erişebilir ve PHP erişmek (ya bir kapsayıcı nesnesi oluşturabilirsiniz bir formda dönmek başka bir dilde ya da her biri için bir sarıcı dizi proxy sarıcı uygulayabilirsiniz değerleri). Daha sonra PHP sunulu nesnesinin bir örneğini oluşturmak olurdu ve ayarlanması gerekir.