none
No puedo hacer funcionar una dll en Windows 7 RRS feed

  • Pregunta

  • Antes que nada un saludo afectuoso desde México. Espero que me puedan orientar para solucionar mi problema.

    Estoy desarrollando una dll muy sencilla en Visual C#, la dll lo único que hace es elevar al cuadrado un número. A continuación muestro el código.

    using
     System;
    using
     System.Collections.Generic;
    using
     System.Text;
    using
     System.Runtime.InteropServices;
    
    namespace
     PotenciaDll
    {
     [Guid("ff204642-582d-4101-8c3d-07441e99bb1f"
    )]
     public
     interface
     IPotencia
     {
      [DispId(1)]
      int
     Resultado(int
     num);
     }
    
     [Guid("BEC2E46C-37FA-4c9d-A35B-F8613FD1891C"
    ), InterfaceType(ComInterfaceType.InterfaceIsDual)]
     public
     interface
     IPotencia_Events
     {
     }
    
     [Guid("ae687a14-dd90-493a-bc59-560ddb27bc3f"
    ),
     ClassInterface(ClassInterfaceType.None),
     ComSourceInterfaces(typeof
    (IPotencia_Events))]
     public
     class
     Potencia : IPotencia
     {
      int
     _Numero;
    
      public
     Potencia()
      {
      }
    
      private
     int
     numero
      {
       get
    
       {
        return
     _Numero;
       }
    
       set
    
       {
        _Numero = value;
       }
      }
    
      private
     void
     AsignarValor(int
     num)
      {
       numero = num;
      }
    
      private
     int
     ObtenerValor()
      {
       return
     numero;
      }
    
      public
     int
     Resultado(int
     num)
      {
       this
    .AsignarValor(num);
       return
     this
    .ObtenerValor() * this
    .ObtenerValor();
      }
     }
    }
    

    Como se puede observar lo que estoy tratando de hacer es crear una dll para que se pueda utilizar mediante COM, el código anterior ya lo pude generar y no me genera ningún tipo de error, le he asignado un "name strong key" , he activado dentro de las propiedades del proyecto -> Pestaña Generar -> la opción Registrar para interoperabilidad COM e hice un instalador. La finalidad de esta dll es poder utilizarlo específicamente con JavaScript.

    Dentro del equipo de desarrollo ya hice pruebas, se ejecuta correctamente, puedo crear el objeto y mandarlo a imprimir mediante JavaScript.

    Estoy utilizando Visual Studio 2005, las características de la máquina de desarrollo son: Windows XP Media Center Edition SP3, Microsoft .NET Framework 3.5 SP1, Internet Explorer 7.0

    Instalo la dll en un equipo cliente, para ser especificos en un equipo que tiene Windows 7, Internet Explorer 8 y a forma de sonar tonto la verdad desconozco el .NET Framework que tiene instalado, la instalación la hago mediante el instalador que hice con Visual Studio 2005. La instalación tampoco me produce error alguno.

    Mi problema viene cuando creo un archivo JavaScript que llamo Prueba.js con el siguiente codigo:

     

    p = new ActiveXObject("PotenciaDll.Potencia");

     

    Para comprobar que el archivo js funciona utilizo el wscript de la siguiente forma en una ventana de comando en el equipo cliente: C:\>wscript Prueba.js,

    pero me manda el siguiente cuadro de error:

    Script: C:\Prueba.js

    Line: 2

    Char: 1

    Error: El servidor de Automatización no puede crear el objeto

    Code: 800A01AD

    Source: Error en tiempo de ejecución de Microsoft JScript.

     

    Y bueno pues ese es mi problema ya que según he revisado en el registro de windows se crearon las entradas correspondientes, es decir que la dll se instaló correctamente pero no funciona. Espero que me puedan orientar en lo que debo de hacer ya que tengo 3 días tratando de hacer funcionar la dll, ya he leído, investigado, haciendo pruebas con otros códigos, intentando otros métodos de instalación, etc, etc, etc. Pero no he podido hacer que funcione ninguna dll creada por mi en el equipo cliente.

    Les agradezco de antemano su apreciable apoyo.

    jueves, 20 de mayo de 2010 22:54