Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

224
Vistas
Cree TagLib# DLL desde la fuente y hágalo COM visible para PHP

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:

  • Hacer el dll comVisible;
  • Registre el dll con regsvr32 ;
  • Utilice un archivo de definición de módulo similar a

;

 ; DESCRIPTION "Simple COM object" EXPORTS DllGetClassObject PRIVATE DllCanUnloadNow PRIVATE DllRegisterServer PRIVATE DllUnregisterServer PRIVATE

Mi 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

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Prueba los siguientes pasos:

  1. Descargue el código fuente de taglib de github
  2. Quite la etiqueta ApplicationIcon del archivo .csproj y abra .sln en Visual Studio
  3. Descargue el proyecto de prueba (no necesita compilarlo)
  4. Haga clic con el botón derecho en el proyecto taglib-sharp --> propiedades --> construir --> habilitar 'Registrarse para la interoperabilidad COM'. También borre el cuadro de texto de símbolos de compilación condicional para que no tenga que molestarse en descargar SharpZipLib por ahora.
  5. Observe # 1: en las propiedades del proyecto -> Aplicación -> Información de ensamblaje -> 'Hacer visible COM de ensamblaje' está marcado
  6. Observe #2: en las propiedades del proyecto --> Aplicación --> el marco de destino está configurado en 3.5 (asegúrese de dejarlo así)
  7. Construir el proyecto (F6)
  8. Lea el contenido de la ventana de salida para ver algunas advertencias

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! :)

over 4 years ago · Santiago Trujillo Denunciar

0

Puede compilar su DLL con .NET Framework 3.5 si no, PHP no podrá cargarlo a través de la clase DOTNET.

Descargar .NET 3.5

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda