Professional Documents
Culture Documents
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
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
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"".
// MathFuncsDll.h
2 de 8
02/11/2013 19:21
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
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
4 de 8
02/11/2013 19:21
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#.
5 de 8
02/11/2013 19:21
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
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.
,asos siguientes
7 de 8
02/11/2013 19:21
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