You are on page 1of 8

Tutorial: Crear y utilizar una biblioteca de vnculos dinmicos (C++)

http://msdn.microsoft.com/es-es/library/ms235636.aspx

Este artculo proviene de un motor de traduccin automtica. Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.

Traduccin

Original

Tutorial: Crear y utili ar una biblioteca de vnculos dinmicos !C""#


Visual Studio 2013 Este tema a0n no )a recibido ninguna valoracin Este tutorial paso a paso muestra cmo crear una biblioteca de vnculos dinmicos !$%%# para el uso con aplicaciones de C"". &tili ar una biblioteca es una gran manera de reutili ar el cdigo. En lugar de volver a implementar las mismas rutinas en todos los programas 'ue cree( escrbalas una ve y( a continuacin( )aga referencia a ellas desde las aplicaciones 'ue re'uieren la funcionalidad. *l colocar cdigo en un arc)ivo $%%( se guarda el espacio en cada aplicacin 'ue )aga referencia a +l y se puede actuali ar el arc)ivo $%% sin volver a compilar todas las aplicaciones. ,ara obtener ms informacin sobre $%%s( vea *rc)ivos $%% en -isual C"". En este tutorial se reali an las siguientes tareas:

Crear un proyecto $%%. *gregar una clase a la $%%. Crear una aplicacin de consola 'ue utili a vinculacin dinmica en tiempo de carga para )acer referencia al arc)ivo $%%. &sar la funcionalidad de la biblioteca de clases en la aplicacin. E.ecute la aplicacin.

En este tutorial crea un arc)ivo $%% 'ue se puede llamar desde las aplicaciones 'ue utili an las convenciones de llamada de C"". ,ara obtener informacin sobre cmo crear arc)ivos $%% para su uso con otros lengua.es( vea %lamar a funciones de un arc)ivo $%% desde aplicaciones programadas en -isual /asic.

1 de 8

02/11/2013 19:21

Tutorial: Crear y utilizar una biblioteca de vnculos dinmicos (C++)

http://msdn.microsoft.com/es-es/library/ms235636.aspx

1e'uisitos previos
En este tema( se da por supuesto 'ue conoce los fundamentos del lengua.e C"".

,ara crear un proyecto de biblioteca de vnculos dinmicos !$%%#


2. En la barra de men0s( eli.a Archivo( Nuevo( Proyecto. 3. En el panel de la i 'uierda del cuadro de dilogo Nuevo proyecto( expanda Instaladas( Plantillas( Visual C++ y( a continuacin( seleccione Win32. 4. En el panel central( seleccione Aplicacin de consola Win32. 7. Especifi'ue un nombre para el proyecto5 por e.emplo( Mat)6uncs$ll( en el cuadro No !re. Especifi'ue un nombre para solucin( por e.emplo( $ynamic%ibrary( en el cuadro de No !re de la solucin. eli.a el botn de Aceptar . 8. En la pgina In"or acin #eneral del cuadro de dilogo Asistente para aplicaciones Win32( eli.a el botn Si#uiente. 9. En la pgina Con"i#uracin de la aplicacin( en $ipo de aplicacin( seleccione %&&. :. Eli.a el botn 'inali(ar para crear el proyecto.

,ara agregar una clase a la biblioteca de vnculos dinmicos


2. ,ara crear un arc)ivo de encabe ado para una nueva clase( en la barra de men0s eli.a ProyectoA#re#ar nuevo ele ento. En el cuadro de dilogo de A#re#ar nuevo ele ento( en el panel i 'uierdo( ba.o Visual C++( seleccione Cdi#o. En el panel central( seleccione Archivo de enca!e(ado )*h+. Especifi'ue un nombre para el arc)ivo de encabe ado( por e.emplo( Mat)6uncs$ll.) y despu+s eli.a el botn de A#re#ar. ;e muestra un arc)ivo de encabe ado en blanco. 3. *gregue el cdigo siguiente al principio del arc)ivo de encabe ado: C++

// MathFuncsDll.h

2 de 8

02/11/2013 19:21

Tutorial: Crear y utilizar una biblioteca de vnculos dinmicos (C++)

http://msdn.microsoft.com/es-es/library/ms235636.aspx

#ifdef MATHFUNCSDLL_EXP !TS #define MATHFUNCSDLL_AP" __decls#ec$dlle%#&'t #else #define MATHFUNCSDLL_AP" __decls#ec$dlli(#&'t #endif

4. *gregue una clase bsica denominada MyMat)6uncs para )acer operaciones matemticas comunes( como suma( resta( multiplicacin y divisin. El cdigo debe ser similar a este: C++

na(es#ace MathFuncs ) // This class is e%#&'ted f'&( the MathFuncsDll. class M*MathFuncs ) #u+lic, // !etu'ns a - + static MATHFUNCSDLL_AP" d&u+le Add$ // !etu'ns a . + static MATHFUNCSDLL_AP" d&u+le Su+t'act$ // !etu'ns a / + static MATHFUNCSDLL_AP" d&u+le Multi#l*$ // !etu'ns a / + // Th'&0s c&nst std,,in1alid_a'2u(ent3 if + static MATHFUNCSDLL_AP" d&u+le Di1ide$ 56 5

Cuando se define el smbolo M*T<6&=C;$%%>E?,O1T;( el smbolo M*T<6&=C;$%%>*,@ establecer el modificador ,,declspec)dlle-port+ en las declaraciones de funcin miembro de este cdigo. Este modificador permite 'ue el arc)ivo $%% exporte la funcin para 'ue pueda ser utili ada por otras aplicaciones. Cuando se define M*T<6&=C;$%%>E?,O1T;( M*T<6&=C;$%%>*,@ define el modificador ,,declspec)dlli port+ en las declaraciones de funcin miembro. Este modificador permite al compilador optimi ar la importacin de la funcin de la $%% para utili arlo en otras aplicaciones. $e forma predeterminada( se define M*T<6&=C;$%%>E?,O1T; cuando se compila el proyecto de Mat)6uncs$ll. ,ara obtener ms informacin( vea dllexport( dllimport.

3 de 8

02/11/2013 19:21

Tutorial: Crear y utilizar una biblioteca de vnculos dinmicos (C++)

http://msdn.microsoft.com/es-es/library/ms235636.aspx

Nota ;i est compilando el proyecto $%% en la lnea de comandos( utilice la opcin del compilador .% para definir el smbolo de M*T<6&=C;$%%>E?,O1T;. 7. En el proyecto /ath'uncs%ll( en el 0-plorador de soluciones( en la carpeta Archivos de cdi#o "uente( abra Mat)6uncs$ll.cpp. 8. @mplemente la funcionalidad para MyMat)6uncs en el arc)ivo de cdigo fuente. El cdigo debe ser similar a este: C++

// MathFuncsDll.c## , Defines the e%#&'ted functi&ns // #include 7stdaf%.h7 #include 7MathFuncsDll.h7 #include 8stde%ce#t9 usin2 na(es#ace std6 na(es#ace MathFuncs ) d&u+le M*MathFuncs,,Add$d&u+le a: d&u+le ) 'etu'n a - +6 5 d&u+le M*MathFuncs,,Su+t'act$d&u+le a: ) 'etu'n a . +6 5 d&u+le M*MathFuncs,,Multi#l*$d&u+le a: ) 'etu'n a / +6 5

d&u+le M*MathFuncs,,Di1ide$d&u+le a: ) if $+ ;; 4< ) th'&0 in1alid_a'2u(ent$7+ cann&t +e =e'& 5 'etu'n a / +6 5 5

9. Compile la biblioteca de vnculos dinmicos eligiendo

4 de 8

02/11/2013 19:21

Tutorial: Crear y utilizar una biblioteca de vnculos dinmicos (C++)

http://msdn.microsoft.com/es-es/library/ms235636.aspx

Co pilacin( Co pilar solucin en la barra de men0s. Nota ;i la edicin express 'ue no muestra un men0 de Co pilacin( en la barra de men0( eli.a 1erra ientas( Con"i#uracin( Con"i#uracin para e-pertos para )abilitarla y eli.a Co pilacin( Co pilar solucin. Nota ;i est generando un proyecto en la lnea de comandos( utilice la opcin del compilador .&% para especificar 'ue el arc)ivo de salida va a ser un arc)ivo $%%. ,ara obtener ms informacin( vea AM$( AMT( A%$ !&tili ar la biblioteca en tiempo de e.ecucin#. &tilice la opcin de compilador .01sc para )abilitar el control de excepciones de C"". ,ara obtener ms informacin( vea AE< !Modelo de control de excepciones#.

,ara crear una aplicacin 'ue )aga referencia $%%


2. ,ara crear la aplicacin de C"" 'ue )ar referencia y utili ar la $%% 'ue acaba de crear( en la barra de men0( eli.a Archivo( Nuevo( Proyecto. 3. En el panel i 'uierdo( deba.o de Visual C++( seleccione Win32. 4. En el panel central( seleccione Aplicacin de consola Win32. 7. Especifi'ue un nombre para el proyecto5 por e.emplo( MyExec1efs$ll( en el cuadro No !re. Bunto a Solucin( seleccione A#re#ar a solucin en la lista desplegable. Esto agrega el nuevo proyecto a la misma solucin 'ue contiene el arc)ivo $%%. eli.a el botn de Aceptar . 8. En la pgina In"or acin #eneral del cuadro de dilogo Asistente para aplicaciones Win32( eli.a el botn Si#uiente. 9. En la pgina Con"i#uracin de la aplicacin( en $ipo de aplicacin( seleccione Aplicacin de consola. :. En la pgina Con"i#uracin de la aplicacin( en 2pciones adicionales( desactive la casilla 0nca!e(ado preco pilado. C. Eli.a el botn 'inali(ar para crear el proyecto.

,ara utili ar la funcionalidad de la biblioteca de clases en la aplicacin

5 de 8

02/11/2013 19:21

Tutorial: Crear y utilizar una biblioteca de vnculos dinmicos (C++)

http://msdn.microsoft.com/es-es/library/ms235636.aspx

2. $espu+s de crear una aplicacin de consola( se crea un programa vaco. El nombre del arc)ivo de cdigo fuente ser el mismo 'ue el elegido anteriormente. En este e.emplo( se llama MyExec1efs$ll.cpp. 3. ,ara utili ar en la aplicacin las rutinas matemticas 'ue cre en la $%%( debe )acer referencia a ella. ,ara ello( seleccione el proyecto MyExec1efs$ll en el 0-plorador de soluciones y( a continuacin( en la barra de men0s( eli.a Proyecto( 3e"erencias. En el cuadro de dilogo P4#inas de propiedades( expanda el nodo Propiedades co unes( seleccione /arco de tra!a5o y re"erencias y( a continuacin( eli.a el botn A#re#ar nueva re"erencia. ,ara obtener ms informacin sobre el cuadro de dilogo 3e"erencias( vea Marco de traba.o y referencias( ,ropiedades comunes( ,ginas de propiedades de Dnombre$e,royectoE !Cuadro de dilogo#. 4. El cuadro de dilogo A#re#ar re"erencia muestra las bibliotecas a las 'ue puede )acer referencia. %a pestaFa Proyecto enumera los proyectos de la solucin actual y las bibliotecas 'ue contienen. En la pestaFa de Proyectos( active la casilla situada .unto a Mat)6uncs$ll y despu+s eli.a el botn de Aceptar. 7. ,ara )acer referencia a los arc)ivos de encabe ado de la $%%( debe modificar la ruta de acceso de los directorios incluidos. ,ara ello( en el cuadro de dilogo P4#inas de propiedades( expanda el nodo Propiedades de con"i#uracin( a continuacin el nodo C.C++ y seleccione 6eneral. Bunto a %irectorios de inclusin adicionales( especifi'ue la ruta de acceso a la ubicacin del arc)ivo de encabe ado Mat)6uncs$ll.). ,uede utili ar una ruta de acceso relativa( como ..GMat)6uncs$llG( y luego elegir el botn Aceptar. 8. *)ora puede utili ar la clase MyMat)6uncs en esta aplicacin. 1eemplace el contenido de MyExec1efs$ll.cpp por el cdigo siguiente: C++

// M*E%ec!efsDll.c## // c&(#ile 0ith, /EHsc /lin? MathFuncsDll.li+ #include 8i&st'ea(9 #include 7MathFuncsDll.h7 usin2 na(es#ace std6 int (ain$< ) d&u+le a ; @.A6 int + ; BB6

6 de 8

02/11/2013 19:21

Tutorial: Crear y utilizar una biblioteca de vnculos dinmicos (C++)

http://msdn.microsoft.com/es-es/library/ms235636.aspx

c&ut 88 7a - + ; 7 88 MathFuncs,,M*MathFuncs,,Add$a: +< 88 endl6 c&ut 88 7a . + ; 7 88 MathFuncs,,M*MathFuncs,,Su+t'act$a: +< 88 en c&ut 88 7a / + ; 7 88 MathFuncs,,M*MathFuncs,,Multi#l*$a: +< 88 en c&ut 88 7a / + ; 7 88 MathFuncs,,M*MathFuncs,,Di1ide$a: +< 88 endl t'* ) c&ut 88 7a / 4 ; 7 88 MathFuncs,,M*MathFuncs,,Di1ide$a: 4< 88 5 catch $c&nst in1alid_a'2u(ent 3e< ) c&ut 88 7Cau2ht e%ce#ti&n, 7 88 e.0hat$< 88 5 'etu'n 46 5

9. Compile el arc)ivo e.ecutable5 para ello( eli.a 6enerar( 6enerar solucin en la barra de men0s.

,ara e.ecutar la aplicacin


2. *seg0rese de 'ue MyExec1efs$ll est seleccionado como proyecto predeterminado. En el 0-plorador de soluciones( seleccione MyExec1efs$ll y( a continuacin( en la barra de men0s( eli.a Proyecto( 0sta!lecer co o proyecto de inicio. 3. ,ara e.ecutar el proyecto( en la barra de men0s( eli.a %epurar( Iniciar sin depurar. El resultado debera ser similar a lo siguiente:

a + b = 106,4 a - b = -91,6 a * b = 732,6 a / b = 0,0747475 Excepcin detectada: b no puede ser cero.

,asos siguientes

7 de 8

02/11/2013 19:21

Tutorial: Crear y utilizar una biblioteca de vnculos dinmicos (C++)

http://msdn.microsoft.com/es-es/library/ms235636.aspx

Anterior7 *rc)ivos $%% en -isual C"" H Si#uiente7 Cmo: Crear bibliotecas de clases

-ea tambi+n
Tareas
,aseo guiado por -isual C"" Tutorial: @mplementar el programa !C""#

Conceptos
*rc)ivos $%% en -isual C"" %lamar a funciones de un arc)ivo $%% desde aplicaciones programadas en -isual /asic

Otros recursos
*plicaciones de escritorio de implementacin !-isual C""#

*diciones de comunidad
I 3J24 Microsoft. 1eservados todos los derec)os.

8 de 8

02/11/2013 19:21

You might also like