petito
unread,Jul 5, 2012, 1:37:32 PM7/5/12You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Hola, soy nuevo en este foro, les agradesco de antemano por la ayuda que me
puedan brindar. Les explico mi problema.
Me dieron un proyecto en c++ en el cual hay 3 archivos principales, un .dll que
se encarga de abrir un puerto en serie y conseguir la data de un dispositivo
conectado a dicho puerto; un archivo .h con las declaraciones de las funciones
que contiene el .dll; y un archivo .cpp donde se llaman a las funciones del .h.
Bueno estoy haciendo una aplicación en C# donde utilizo el .dll, sin
embargo no consigo su correcto funcionamiento. Tengo diversos problemas en la
aplicación pero todos parecidos, por ejemplo en la siguiente
función:
status = GetVersion(buffer,32)
status tendrá 1 si la llamada a la función es satisfactoria y -1
en caso contrario. Mi problema es con el primer parámetro; en el proyecto
en c++ buffer retorna la versión del dispositivo, pero en mi proyecto en
C# no retorna dato alguno.
La declaración de la funcion es esta:
public static extern long GetVersion(char[] buffer, long maxlength),
probé haciendo buffer un parámetro por referencia pero retorna
error.
Estuve buscando y leyendo pero no entiendo como c++ trata ese parámetro,
es decir por qué en el proyecto en c++ buffer devuelve data y no en el
mio. Se me ocurrió que buffer fué declarado como parametro por
referencia, pero al tratarlo así me da error con lo cual concluyo que
fué declarado como parametro por valor. Si alguien pudiera decirme en
qué me estoy equivocando o qué estoy omitiendo se lo
agradecería mucho.