Discussion:
Ayuda en paso de parametros de visual a c
(demasiado antiguo para responder)
Jose
2004-08-01 18:06:39 UTC
Permalink
Hola amigos alguno de vosotros sabe como puedo pasar
un texto como parametro a una funcion en c que se encuentra dentro de una
dll

yo lo que hago es lo siguiente

desde visual:

Dim cadena as string
string = text1
funcion(cadena)

y el prototopo en c es

int funcion(char *cadena);
o
int funcion(char cadena[]);

demonios! pero no me funciona.
Tambien he intentado pasar un vector tipo string desde visual pero tampoco
¿que hago mal?

Un saludo y gracias de antemano
Jose Llovell

***@tinet.fut.es
Alberto Giménez
2004-08-01 20:14:57 UTC
Permalink
Post by Jose
Hola amigos alguno de vosotros sabe como puedo pasar
un texto como parametro a una funcion en c que se encuentra dentro de una
dll
Pues con un char[]="texto bla bla bla"
y luego llamas a la funcion.
Post by Jose
Dim cadena as string
Esto no se que es pero no es C
Post by Jose
string = text1
"string" no está declarado, y "text1" tampoco
Post by Jose
funcion(cadena)
y el prototopo en c es
int funcion(char *cadena);
o
int funcion(char cadena[]);
Postea un trozo de código compilable a ver si podemos sacar algo en
claro, será más fácil para todos ;)
Hombre! un tarraconense :)
Saludos
--
Luis Alberto Giménez
JabberID: ***@amessage.de
GnuPG ID: 0x3BAABDE1
Lokutus
2004-08-02 00:28:20 UTC
Permalink
El tal Jose en la fecha Domingo 01 Agosto 2004 20:06 escribio en
Post by Jose
Dim cadena as string
string = text1
funcion(cadena)
y el prototopo en c es
int funcion(char *cadena);
Las cadenas se pasan por valor. Pon ByVal en el declare sub
--
Lokutus, asimilando la red.
Antoine Leca
2004-08-02 11:10:02 UTC
Permalink
Post by Jose
Hola amigos alguno de vosotros sabe como puedo pasar
un texto como parametro a una funcion en c que se encuentra dentro de
una dll
Necesitarás declarar la función C con especial parametros (como
__declspec(dllexport) __stdcall o cosas paregudas; también hay problemas con
los nombres). Perdón por no conocer los detalles, y menos en castellano.
Post by Jose
yo lo que hago es lo siguiente
Visual Basic, supongo...
Post by Jose
Dim cadena as string
string = text1
funcion(cadena)
Eso no funcionará tal cual. Visual Basic almacena los "strings" en un
formato especial (una versión de los "Variant"), que permite hacer variar el
tamaño. Hay que usar un formato de tamaña fijo (llamado BSTR si no me
equivovo), que cuando lo miras desde C es parecido a una table de
caracteres. Encontrarás en la documentación de VB los detalles escabrosos al
respecte.

Puede ser que basta con poner

Private Declare Sub funcion Lib "MiDLL.dll" (ByVal cadena As String)

Pero tengo entendido que para casos más complicados, habrás que entender el
proceso desde VB primero.
Post by Jose
Tambien he intentado pasar un vector tipo string desde visual pero
tampoco ¿que hago mal?
Ígualmente un vector es en realidad un Variant, de tipo "SafeArray". Peró
aquí creo que el truco del ByVal no te bastará...


Antoine

Loading...