none
Uso de Dll externa RRS feed

  • Pregunta

  • Buenas a tod@s, 

    Para un determinado programa en C#, he generado una dll en Labview para cargarla en el programa principal C#, no he tenido problemas para la carga de la función en el sistema después de registrarla en Windows. Al ir a hacer uso de la dll, tengo el siguiente problema:

    La función tiene dos variables, una de entrada y otra de salida declarada como: 

    public static void CalculoVP_v3(double[*] Value_Sensor, out double[*] Value_SensorFilt)

    He definido las variables como:

    double[] Value_Sensor;

    double[] Value_SensorFilt;

    Me sale el siguiente error: Argumento 1: no se puede convertir de 'double[]' a 'double[*]'

    Uso de la variable local no asignada 'Value_Sensor'

    Os agradecería me dijerais que estoy haciendo mal. 

    Saludos y gracias de antemano. 

    lunes, 26 de febrero de 2018 13:08

Respuestas

  • hola

    >>he generado una dll en Labview para cargarla en el programa principal C#, no he tenido problemas para la carga de la función en el sistema después de registrarla en Windows

    registrarla en windows ? que tipo de dll se trata? es una dll que no fue creada con .net

    porque si requiere registro entonces es un componente COM creado con VB6, este si se registra

    o te refieres a registrarlo en la GAC?

    >>Argumento 1: no se puede convertir de 'double[]' a 'double[*]'

    que seria ese *? es acaso un puntero de c++

    porque si es c++ debes usar la librerias mediente el [DllImport]

    como se explica en el articulo

     Unmanaged C++ Dll call From Managed C# Application

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 26 de febrero de 2018 14:38

Todas las respuestas

  • hola

    >>he generado una dll en Labview para cargarla en el programa principal C#, no he tenido problemas para la carga de la función en el sistema después de registrarla en Windows

    registrarla en windows ? que tipo de dll se trata? es una dll que no fue creada con .net

    porque si requiere registro entonces es un componente COM creado con VB6, este si se registra

    o te refieres a registrarlo en la GAC?

    >>Argumento 1: no se puede convertir de 'double[]' a 'double[*]'

    que seria ese *? es acaso un puntero de c++

    porque si es c++ debes usar la librerias mediente el [DllImport]

    como se explica en el articulo

     Unmanaged C++ Dll call From Managed C# Application

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 26 de febrero de 2018 14:38
  • Buenas la dll la cree con Labview. generando una .NET Interop Assembly. La he registrado en Windows por que he visto ejemplos por ahí que así lo hacían, no sé si es el método correcto. 

    Como puedo saber si la dll es C++ o C#, en la función así me aparece el argumento de entrada y salida. 

    Gracias. 

    lunes, 26 de febrero de 2018 14:55
  • hola

    >>la dll la cree con Labview

    la verdad no se que es Labview, pero como sabes que es interop ? o sea tienes dos dll, una de estas lleva por ejemplo el xx.Interop.dll

    porque esa no se registra,

    >>La he registrado en Windows

    como la registraste? usaste el comando regsvr32.exe

    >>Como puedo saber si la dll es C++ o C#

    si intentas referenciar la dll si es interop te dejar hacerlo, si es c++ te lo indicara con un error

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 26 de febrero de 2018 15:04
  • Buenas Leandro, Labview es otro software de programación gráfico. Si la registré usando el comando que comentas. Sé que es Interop por que cuando la genero Labview tiene un Build específico para InterOp. 

    Este mismo método lo use con un ejemplo de una librería creada de la misma forma, pero que únicamente sumaba dos números y funcionó correctamente. Con esta dll, el problema que tengo es como comentaba al inicio de la duda en que me da el error en las variables que indico: 

    Argumento 1: no se puede convertir de 'double[]' a 'double[*]'

    Uso de la variable local no asignada 'Value_Sensor'

    Saludos

    lunes, 26 de febrero de 2018 15:16