Principales respuestas
Uso de Dll externa

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.
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- Marcado como respuesta Pablo RubioModerator jueves, 1 de marzo de 2018 21:15
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- Marcado como respuesta Pablo RubioModerator jueves, 1 de marzo de 2018 21:15
-
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.
-
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 -
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