C/Visual C - No es eso

 
Vista:

No es eso

Publicado por Luis (8 intervenciones) el 11/04/2001 12:43:54
No quiero crear una dll, quiero añadir una dll que ya esta hecha a un proyecto que estoy haciendo yo. Gracias.
Luis.
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:No es eso

Publicado por Emilio (42 intervenciones) el 11/04/2001 12:49:39
On the program that calls the DLL you need to add the include file of the header file where exist the exported classes or functions like:

#include "<path and name of the header file>"

Don't forget that the header file that you export, you need to add another include that saids the ID'S of MFC objects, this header file is Resource.h.

On the program that calls the DLL you need to add the file lib that the DLL creates.

1.Choice on the menu Project.
2.Choice settings.
3.Choice link
4.On the Edit box that said Object/Library modules add the name of the file lib.

On the program that calls the DLL you need to add the PATHS of the header file and lib file.

1.Choice on the menu Tools.
2.Choice Options.
3.Choice Directories
4.Choice in combo box includes and path the folder of the header file.
5.Choise in combo box libraries and path the folder of the lib file.

To Build and Use the DLL on application the DLL have to exist an the same folder of the application or on /WINDOWS/Systems32/

GOOD LUCK.

Emilio
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 pero...

Publicado por Luis (8 intervenciones) el 11/04/2001 12:56:11
Me da este error:

Linking...
impdrvr.dll : fatal error LNK1136: invalid or corrupt file

¿Es grave? A lo mejor debo registrarla, pero no se como.
Muchas gracias por tu ayuda.
Luis.
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:No es eso

Publicado por alvaro (10 intervenciones) el 11/04/2001 13:43:57
No se si te he entendido muy bien, pero si lo que pretendes es poder utilizar una DLL en un proyecto de VC++, necesitas el fichero "tu_biblioteca.lib" para que tu proyecto llegue a compilar. Si sólo tienes la DLL a secas, entonces, lo siento pero lo llevas algo chungo. Espero que esta aclaración te halla servido de algo.

Salu2 y buena suerte
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:No es eso

Publicado por alvaro (10 intervenciones) el 11/04/2001 14:09:26
La respuesta anterior, a decir verdad, no es correcta del todo ya que la necesidad del *.lib de tu biblioteca sólo es para el caso de un enlazado implicito, si por el contrario no tienes el *.lib lo que tendrás que hacer es un enlazado explícito..., está bien, está bien me explico:

Con el enlazado explicito te verás obligado a llamar ala función LoadLibrary de Win32, especificando el camino de acceso a la DLL como parámetro.LoadLibrary devuelve un parametro HINSTANCE que puede utilizarse en un llamad a GetProcAddress, que convierte un símbolo u ordinal en una dirección dentro de la DLL.

Supongamos que tenemos una DLL que exporta una función de la siguiente manera:
extern "C" __declspec(dllexport) double RaizCuadrada(double d)

Aquí te muestro cómo se haría el enlazado explícito de de esta función en un programa cliente:

// definimos un puntero a función
typedef double(RAIZCUADRADAPROC)(double);
HINSTANCE hInstance;
RAIZCUADRADAPROC *pFuncion;

VERYFY(hInstance = :: LoadLybrary("ruta_de_la_DLL"));

VERYFY(pFuncion = (RAIZCUADRADAPROC *)::GetProcAddress(hInstance,"RaizCuadrada"));

// llamamos a la función de la DLL
double d = (*pFuncion)(32.0)

Espero que esto sí que te haya servido de ayuda
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:No es eso

Publicado por Luis (8 intervenciones) el 11/04/2001 14:45:35
Madre mia, ¿y tengo que hacer eso por cada funcion que quiera usar de la dll? El .lib no lo tengo, pero si los prototipos:
void (FAR PASCAL *Imp_Init) (short far*,short far*,short far*);
...
Emilio me escribió que en Project->Settings.... se podía especificar cualquier dll. Durante un tiempo trabaje con VBasic y era muy sencillo, solo que a veces teniamos problemas porque se nos olvidaba registrar las dll's o teniamos registradas versiones anteriores y habia que desregistrarlas primero... Quizas tu sepas algo de esto. De todas formas, si no encuentro alguna alternativa usare lo que tu me has dicho, muchisimas gracias, por cierto.
Luis.
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