C/Visual C - dudas como crear dll con vc++ 6.0

 
Vista:

dudas como crear dll con vc++ 6.0

Publicado por Rics (1 intervención) el 13/07/2006 10:28:05
Hola,
no conozco mucho de c++ y dll's.
Estoy creando una dll en visual c++, tengo las siguientes dudas:

- las funciones a exportar estan dentro de una clase del proyecto, como debo declarar las funciones para que se puedan utilizar desde otras aplicaciones desarrolladas en cualquier formato? o solo con definir la clase asi:

class __declspec(dllexport) MyClass: public CCmdTarget

es suficiente?

- debo incluir el archivo .def ? si es asi, que significa el numero despues de @ en ej:

LIBRARY "MyDll"
DESCRIPTION 'MyDll Windows Dynamic Link Library'

EXPORTS
MyMethod @1
OtherMethod @2

si saben de algun código o ejemplo que me pueda ayudar.
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:dudas como crear dll con vc++ 6.0

Publicado por fernando.gomez (1603 intervenciones) el 13/07/2006 18:37:43
Hola. Con el __declspec(dllexport) es más que suficiente, no necesitas el .def. El número después de la arroba es el ordinal -es decir, MyMethod es el primer método exportado, OtherMethod es el segundo, etcétera.

Nada más aquí una cuestión. Exportar clases dervidadas de clases de MFC puede ser un poco tramposo en algunos casos. Ahorita estás exportando directamente una clase derivada de CCmdTarget, no debes tener problemas. Pero antes de exportarla, debes consultar la documentación a ver si no tienes que hacer algo adicional, para cada clase en particular. Esto, porque MFC inicializa variables globales, y si CCmdTarget u otra clase hacen uso de estas, cuando emplees tu clase derivada puede que no estén inicializadas estas variables y puedes tener problemas. Por ahí hay una macro -no recuerdo su nombre- que siempre debe llamarse antes de emplear clases de MFC desde una clase que se va a exportar. Consulta en www.msdn.microsoft.com/visualc.

Saludos.
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