Hola, quiero escanear archivos de audio y video y almacenar sus metadatos en una base de datos usando php. Encontré este contenedor de línea de comandos que usa TagLib.dll compilado por desarrolladores de banshee para hacer el trabajo. Funciona bien pero está limitado por las funciones implementadas. Quiero acceder directamente a los métodos dll a través de PHP.
En PHP tenemos una función ( DOTNET ) que me permite instanciar una clase desde un ensamblado .Net y llamar a sus métodos y acceder a sus propiedades de esta manera:
/*$obj = new DOTNET("assembly", "classname");*/ $stack = new DOTNET("mscorlib", "System.Collections.Stack"); $stack->Push(".Net"); $stack->Push("Hello "); echo $stack->Pop() . $stack->Pop(); //Returns string(10) "Hello .Net";Aquí están las fuentes del proyecto Taglib# en github
Vi muchas preguntas relacionadas con PHP-DLL-COM y hay algunas recomendaciones:
regsvr32 ;;
; DESCRIPTION "Simple COM object" EXPORTS DllGetClassObject PRIVATE DllCanUnloadNow PRIVATE DllRegisterServer PRIVATE DllUnregisterServer PRIVATEMi pregunta es: ¿Cómo puedo construir la DLL y usar su método a través de PHP?
Mi configuración :
sistema operativo
Windows Server 2012 R2 Edición estándar i586
apache:
Apache/2.2.21 (Win32) DAV/2 PHP/5.4.42 mod_ssl/2.2.21 OpenSSL/0.9.8r
PHP
Versión PHP: 5.4.42
Arco: x86
Compilador: MSVC9 (Visual C++ 2008)
Soporte COM: habilitado
Compatibilidad con DCOM: deshabilitada
Soporte .Net habilitado
Microsoft Visual Studio 2013
Prueba los siguientes pasos:
Ahora que tiene src\taglib-sharp.dll, debe registrarlo en el caché de ensamblaje global para que la clase DOTNET lo encuentre. Vea PHP DOTNET hell para más detalles si no está familiarizado con esto.
Si todo está bien, puede obtener una copia de SharpZipLib y volver a ingresar el símbolo de compilación condicional HAVE_SHARPZIPLIB --> reconstruir --> volver a implementar en GAC --> ¡y ser un hombre feliz! :)
Puede compilar su DLL con .NET Framework 3.5 si no, PHP no podrá cargarlo a través de la clase DOTNET.