C/Visual C - DLL hecha en visual C llamada desde VB

 
Vista:

DLL hecha en visual C llamada desde VB

Publicado por danielGT (5 intervenciones) el 22/11/2001 12:39:02
Hola. Yo otra vez. :)

Tengo un problema con una DLL que hice en visual C. Esta DLL tiene solo una funcion la que se conecta por sockets a un servidor, bla bla bla. Pero el problema es que al llamarla desde un programa en visual basic, me dice "can't find DLL entry point mi_funcion in mi_libreria.dll"

la estructura de la DLL es esta:

__declspec(dllexport) int mi_funcion (parametros)
{
... mi codigo;
}

y hay una clase en la ficha Globals que tiene el mismo nombre que la funcion. Al compilar para que me genere mi_libreria.dll no me manda ningun error ni tampoco ninguna advertencia (0 errors, 0 warnings).

Desde VB llamo a la funcion con Declare Function mi_funcion Lib "ruta\mi_libreria.dll" (parametros) as Tipo.

pero me manda el error que les explique.

Por favor, alguien podria ayudarme a resolver mi drama?

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:DLL hecha en visual C llamada desde VB

Publicado por Oscar (114 intervenciones) el 22/11/2001 20:43:54
Lo que pasa es que la macro __declspec(dllexport) te exporta la funcion con el nombre mas una @ y un numero, para saber bien el nombre de la funcion busca el programita DUMPBIN y ejecutalo asi:
DUMPBIN /EXPORTS mi_libreria.dll
Asi te va a tirar todas las funciones que tiene exportadas esa dll, ese es el nombre que tenes que usar en el declare de Visual Basic.
Otra cosa, tenes que usar __stdcall cuando declaras la funcion porque si no te va a salir otro error en Visual Basic que dice que la funcion no respeta la llamada estandar.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

gracias oscar: necesito otra mas

Publicado por danielGT (5 intervenciones) el 22/11/2001 23:59:18
Gracias, ya van 2 veces que me ayudas, te lo agradezco mucho... no es por abusar, pero ahora que ya resolvi el problema de la manera que me dijiste, tengo un 3er problema: si en mi DLL tengo la susodicha funcion y esta tiene 3 parametros mi_funcion (char p1[100],char p2[100], char p3[100]), cuando la llamo desde main() en un mismo programa C, me funciona de las mil maravillas, pero cuando la uso como DLL, no funciona absolutamente nada. En el programa en visual al usar el declare, los parametros los declaro como tipo string (me aseguro que el usuario no ingrese mas del largo 100), pero parece que se pierden los parametros, no estoy muy seguro si se pierden los parametros pero claramente los datos no estan presentes, antes los parametros los declaraba en C como char *p1,char *p2,char *p3, pero ahi no me funcionaba ni siquiera dentro del mismo programa C, lo que pasa es que estoy trabajando con sockets. Tu o alguien podria ayudarme?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:gracias oscar: necesito otra mas

Publicado por oscar (114 intervenciones) el 23/11/2001 17:51:00
Lo correcto seria llamarla como funcion(char* arg1, char* arg2, char* arg3), decime que error tenes cuando la llamas asi. No creo que te tire algun error de ese estilo solamente porque usas socket....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar