C/Visual C - DLL

 
Vista:

DLL

Publicado por LightBrother (3 intervenciones) el 06/06/2005 16:32:02
Buen día gente del foro, tengo un problema con una dll, no es algo específico de C o Visual C, pero tal vez alguno pueda darme una ayuda.
Tengo una DLL que está hecha con C, y tengo un programa en Visual C que accede a esta DLL y la utiliza sin problemas.
Cuando quiero acceder a estar DLL desde otros lenguajes (V. FOX , Dolphin smalltalk) no encuentra ninguna de las funciones de la DLL.
Yo cuando invocó por ejemplo al método Open() de la DLL desde Visual C, todo bien. Pero cuando quiero hacerlo desde los otros lenguajes me dice: "Cannot find entry point Open in the DLL".
Cuando abro la DLL desde el programa para ver las dependencias, veo todas las funciones, pero todas empiezan con _ y termina con @ y el número de parámetros. Puede ser que esto influya en la forma en que tengo que llamar a las funciones.
Si quisiera hacer una DLL. ¿ como es la sintaxis para escribir los métodos que van a poder ser accedidos a dicha DLL ?.

Bueno, desde ya muchas gracias y espero no haber sido muy extenso.
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

Publicado por fernando.gomez (1603 intervenciones) el 06/06/2005 17:19:44
¿Tienes definida una función DllMain? Eso del entry point me suena a que te falta esa función...

Lo de _ y @ es el "mangling"... en teoría es algo estádar. ¿La librería tiene un archivo .DEF para exportar las funciones, o empleas __declspec(dllexport)?
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:DLL

Publicado por LightBrother (3 intervenciones) el 07/06/2005 00:11:38
Fernando: gracias por tu respuesta, tengo el método DLLMain definido así:

int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
return TRUE ;
}

y cada una de las funciones tiene la palabra PM_DLL_EXPORT. Por ejemplo:

PM_DLL_EXPORT int PM_DLL_CALLBACK CheckForQTLibrary(void)

La verdad que desde mi limitado punto de vista veo todo bien !!... pero obviamente algo no debe estar bien.
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:DLL

Publicado por LightBrother (3 intervenciones) el 07/06/2005 00:26:42
Una duda que me surgió: ¿ necesito registrar la DLL, llamándola desde C anda sin registrarla, pero tendré que registrarla para llamarla desde los otros lenguajes ?.

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