SlideShare una empresa de Scribd logo
Se trata de crear una dll dinámica con C++ en el cual hace una operación matemática y lee un
mensaje de texto.
Creamos un proyecto nuevo de la dll que lo llamo en este caso Super_DLL.
Crear código en Super_dll.cpp.
extern "C" {
__declspec(dllexport) int WINAPI Suma(int, int);
__declspec(dllexport) LPTSTR WINAPI Mensaje();
};
// Suma.
int WINAPI Suma(int a, int b) { return a + b; }
// Mensaje.
LPTSTR WINAPI Mensaje() { return LPTSTR(L"Hola. Soy una DLL Win32."); }
Crear un archivo de texto llamado Super_dll.def en Archivos de origen.
Llamamos al archivo de texto Super_dll.def.
Dentro del archivo rellenar estos códigos.
LIBRARY Super_dll
EXPORTS
Suma
Mensaje
Proyectos -> Propiedades.
Escribir Super_dll.
Pulsa botón Macros>>
Pulsar Aplicar y Aceptar.
Agregamos un nuevo proyecto en Visual C#.
Arrastramos dos etiquetas o labels en el formulario.
Vemos el código del formulario y introducimos este.
using System;
using System.Runtime.InteropServices; // No olvidar.
using System.Windows.Forms;
namespace Interfaz_cs
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = Marshal.PtrToStringAuto(SUPER_DLL.Mensaje());
label2.Text = SUPER_DLL.Suma(1764, -764).ToString();
}
internal class SUPER_DLL
{
[DllImport("Super_dll.dll")]
extern static public int Suma(int a, int b);
[DllImport("Super_dll.dll")]
extern static public IntPtr Mensaje();
}
}
}
Borrar código de abajo en dllmain.cpp
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Queda así abajo.
Establecer como proyecto.
En el proyecto Super_dll dar Compilar.
Una vez compilado la DLL llamada Super_dll.dll vamos al directorio para arrastrarla a otro
directorio, o simplemente lo copiamos y pegamos en otro lugar.
En este caso está aquí la dll compilada.
C:UsersMetaDocumentsVisual Studio 2017ProjectsSuper_dllDebug
Al copiar el archive Super_dll.dll, lo pegamos en el proyecto, precisamente en el ejecutable de
la interfaz de C#, llamado Interfaz_cs.exe.
Super_dll.dll al lado de Interfaz_cs.exe
Pulsar F5 y ejecutar la aplicación.
http://electronica-pic.blogspot.com/

Más contenido relacionado

La actualidad más candente

Emcpp item31
Emcpp item31Emcpp item31
Emcpp item31
mitsutaka_takeda
 
[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30
[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30
[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30
Chris Ohk
 
Fast as C: How to Write Really Terrible Java
Fast as C: How to Write Really Terrible JavaFast as C: How to Write Really Terrible Java
Fast as C: How to Write Really Terrible Java
Charles Nutter
 
Modern C++ Explained: Move Semantics (Feb 2018)
Modern C++ Explained: Move Semantics (Feb 2018)Modern C++ Explained: Move Semantics (Feb 2018)
Modern C++ Explained: Move Semantics (Feb 2018)
Olve Maudal
 
cpp input & output system basics
cpp input & output system basicscpp input & output system basics
cpp input & output system basics
gourav kottawar
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
Panagiotis Papadopoulos
 
Programming in C Basics
Programming in C BasicsProgramming in C Basics
Programming in C Basics
Bharat Kalia
 
Conan.io - The C/C++ package manager for Developers
Conan.io - The C/C++ package manager for DevelopersConan.io - The C/C++ package manager for Developers
Conan.io - The C/C++ package manager for Developers
Uilian Ries
 
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
Seok-joon Yun
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Seok-joon Yun
 
Clean code
Clean codeClean code
Clean code
ifnu bima
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
Lukas Fittl
 
Comments in C Programming
Comments in C ProgrammingComments in C Programming
Comments in C Programming
programming9
 
Getting started cpp full
Getting started cpp   fullGetting started cpp   full
Getting started cpp full
Võ Hòa
 
Trends and future of C++: Evolving a systems language for performance - by Bj...
Trends and future of C++: Evolving a systems language for performance - by Bj...Trends and future of C++: Evolving a systems language for performance - by Bj...
Trends and future of C++: Evolving a systems language for performance - by Bj...
devstonez
 
C++ oop
C++ oopC++ oop
C++ oop
Sunil OS
 
C Programming
C ProgrammingC Programming
C Programming
Sumant Diwakar
 
Introduction to git & GitHub
Introduction to git & GitHubIntroduction to git & GitHub
Introduction to git & GitHub
Poornachandrakashi
 
git - eine praktische Einführung
git - eine praktische Einführunggit - eine praktische Einführung
git - eine praktische Einführung
Marcel Eichner
 
An Introduction to CMake
An Introduction to CMakeAn Introduction to CMake
An Introduction to CMake
ICS
 

La actualidad más candente (20)

Emcpp item31
Emcpp item31Emcpp item31
Emcpp item31
 
[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30
[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30
[C++ Korea] Effective Modern C++ Study, Item 27, 29 - 30
 
Fast as C: How to Write Really Terrible Java
Fast as C: How to Write Really Terrible JavaFast as C: How to Write Really Terrible Java
Fast as C: How to Write Really Terrible Java
 
Modern C++ Explained: Move Semantics (Feb 2018)
Modern C++ Explained: Move Semantics (Feb 2018)Modern C++ Explained: Move Semantics (Feb 2018)
Modern C++ Explained: Move Semantics (Feb 2018)
 
cpp input & output system basics
cpp input & output system basicscpp input & output system basics
cpp input & output system basics
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
 
Programming in C Basics
Programming in C BasicsProgramming in C Basics
Programming in C Basics
 
Conan.io - The C/C++ package manager for Developers
Conan.io - The C/C++ package manager for DevelopersConan.io - The C/C++ package manager for Developers
Conan.io - The C/C++ package manager for Developers
 
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
 
Clean code
Clean codeClean code
Clean code
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Comments in C Programming
Comments in C ProgrammingComments in C Programming
Comments in C Programming
 
Getting started cpp full
Getting started cpp   fullGetting started cpp   full
Getting started cpp full
 
Trends and future of C++: Evolving a systems language for performance - by Bj...
Trends and future of C++: Evolving a systems language for performance - by Bj...Trends and future of C++: Evolving a systems language for performance - by Bj...
Trends and future of C++: Evolving a systems language for performance - by Bj...
 
C++ oop
C++ oopC++ oop
C++ oop
 
C Programming
C ProgrammingC Programming
C Programming
 
Introduction to git & GitHub
Introduction to git & GitHubIntroduction to git & GitHub
Introduction to git & GitHub
 
git - eine praktische Einführung
git - eine praktische Einführunggit - eine praktische Einführung
git - eine praktische Einführung
 
An Introduction to CMake
An Introduction to CMakeAn Introduction to CMake
An Introduction to CMake
 

Similar a Crear una dll en C++ y llamarla con la interfaz C#

Actividad dll
Actividad dllActividad dll
Actividad dll
Jose Alfaro
 
De algoritmo a programa en c++
De algoritmo a programa en c++De algoritmo a programa en c++
De algoritmo a programa en c++
maribelduran
 
Lazarus
LazarusLazarus
Tutorial code block
Tutorial code blockTutorial code block
Tutorial code block
Idalia Tristan
 
Ejercicios con Funciones en programación I C++
Ejercicios con Funciones en programación I C++Ejercicios con Funciones en programación I C++
Ejercicios con Funciones en programación I C++
Carlos Aviles Galeas
 
PROGRAMACION
PROGRAMACIONPROGRAMACION
PROGRAMACION
La Positiva Seguros
 
Visual studio 2010
Visual studio 2010Visual studio 2010
Visual studio 2010
Daniel Olalde Soto
 
Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)
Pedro Antonio Villalta (Pavillalta)
 
Manual de android
Manual de androidManual de android
Manual de android
481200619
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
Andrea130190
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
Taniatorres1993
 
C sharp manual[1]
C sharp manual[1]C sharp manual[1]
C sharp manual[1]
Kalizbeth
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
Anderson Pazmiño
 
Algoritmos para c#
Algoritmos para c#Algoritmos para c#
Algoritmos para c#
Linder Sandi Rengifo
 
Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)
javier_ot99
 
37975756-Guia-de-C
37975756-Guia-de-C37975756-Guia-de-C
37975756-Guia-de-C
liberaunlibroupeg
 
Vbnet2010 ejerciciosdeconsola
Vbnet2010 ejerciciosdeconsolaVbnet2010 ejerciciosdeconsola
Vbnet2010 ejerciciosdeconsola
VAOC1984
 
Aplicación zirconia
Aplicación zirconiaAplicación zirconia
Aplicación zirconia
Cristian Omar Jaramillo Méndez
 
Appvideo
AppvideoAppvideo
Appvideo
ang13gam3r
 
Intro2
Intro2Intro2

Similar a Crear una dll en C++ y llamarla con la interfaz C# (20)

Actividad dll
Actividad dllActividad dll
Actividad dll
 
De algoritmo a programa en c++
De algoritmo a programa en c++De algoritmo a programa en c++
De algoritmo a programa en c++
 
Lazarus
LazarusLazarus
Lazarus
 
Tutorial code block
Tutorial code blockTutorial code block
Tutorial code block
 
Ejercicios con Funciones en programación I C++
Ejercicios con Funciones en programación I C++Ejercicios con Funciones en programación I C++
Ejercicios con Funciones en programación I C++
 
PROGRAMACION
PROGRAMACIONPROGRAMACION
PROGRAMACION
 
Visual studio 2010
Visual studio 2010Visual studio 2010
Visual studio 2010
 
Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)
 
Manual de android
Manual de androidManual de android
Manual de android
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
C sharp manual[1]
C sharp manual[1]C sharp manual[1]
C sharp manual[1]
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
Algoritmos para c#
Algoritmos para c#Algoritmos para c#
Algoritmos para c#
 
Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)
 
37975756-Guia-de-C
37975756-Guia-de-C37975756-Guia-de-C
37975756-Guia-de-C
 
Vbnet2010 ejerciciosdeconsola
Vbnet2010 ejerciciosdeconsolaVbnet2010 ejerciciosdeconsola
Vbnet2010 ejerciciosdeconsola
 
Aplicación zirconia
Aplicación zirconiaAplicación zirconia
Aplicación zirconia
 
Appvideo
AppvideoAppvideo
Appvideo
 
Intro2
Intro2Intro2
Intro2
 

Más de Ángel Acaymo M. G.

Arduino consola y puerto serie
Arduino consola y puerto serieArduino consola y puerto serie
Arduino consola y puerto serie
Ángel Acaymo M. G.
 
Luz por detector de movimiento y crepuscular Senpir
Luz por detector de movimiento y crepuscular SenpirLuz por detector de movimiento y crepuscular Senpir
Luz por detector de movimiento y crepuscular Senpir
Ángel Acaymo M. G.
 
Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.
Ángel Acaymo M. G.
 
Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A
Manual Interfaz con VC++ y VB para puerto serie y PIC16F84AManual Interfaz con VC++ y VB para puerto serie y PIC16F84A
Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A
Ángel Acaymo M. G.
 
Pic Rs232 puerto serie con PIC16F84A
Pic Rs232 puerto serie con PIC16F84APic Rs232 puerto serie con PIC16F84A
Pic Rs232 puerto serie con PIC16F84A
Ángel Acaymo M. G.
 
Manual Ic Prog
Manual Ic ProgManual Ic Prog
Manual Ic Prog
Ángel Acaymo M. G.
 
Manual básico WinPic800
Manual básico WinPic800Manual básico WinPic800
Manual básico WinPic800
Ángel Acaymo M. G.
 
Manual básico Minicom
Manual básico MinicomManual básico Minicom
Manual básico Minicom
Ángel Acaymo M. G.
 

Más de Ángel Acaymo M. G. (8)

Arduino consola y puerto serie
Arduino consola y puerto serieArduino consola y puerto serie
Arduino consola y puerto serie
 
Luz por detector de movimiento y crepuscular Senpir
Luz por detector de movimiento y crepuscular SenpirLuz por detector de movimiento y crepuscular Senpir
Luz por detector de movimiento y crepuscular Senpir
 
Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.
 
Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A
Manual Interfaz con VC++ y VB para puerto serie y PIC16F84AManual Interfaz con VC++ y VB para puerto serie y PIC16F84A
Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A
 
Pic Rs232 puerto serie con PIC16F84A
Pic Rs232 puerto serie con PIC16F84APic Rs232 puerto serie con PIC16F84A
Pic Rs232 puerto serie con PIC16F84A
 
Manual Ic Prog
Manual Ic ProgManual Ic Prog
Manual Ic Prog
 
Manual básico WinPic800
Manual básico WinPic800Manual básico WinPic800
Manual básico WinPic800
 
Manual básico Minicom
Manual básico MinicomManual básico Minicom
Manual básico Minicom
 

Último

sesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWAREsesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWARE
YanelyMedalithBM
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
APLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdfAPLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdf
jordanovillacorta09
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
Eduardo455921
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
dayronfabricioruizmo
 
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Javier Martinez Seco
 
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) -  JRM - APSTI I ADuckDuckGo (Motor de Busqueda) -  JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
DarnotOcxalFlorianoP
 
PLUGIN (Mary Cielo Huañec Paz) .pdf
PLUGIN (Mary Cielo Huañec Paz)      .pdfPLUGIN (Mary Cielo Huañec Paz)      .pdf
PLUGIN (Mary Cielo Huañec Paz) .pdf
MaryCieloHuaecPaz
 
Aplicación de las sentencias de control en telecomunicaciones
Aplicación de las sentencias de control en telecomunicacionesAplicación de las sentencias de control en telecomunicaciones
Aplicación de las sentencias de control en telecomunicaciones
ambuludimateo2
 
IF y SWITCH: Claves para una Lógica de Programación
IF y SWITCH: Claves para una Lógica de ProgramaciónIF y SWITCH: Claves para una Lógica de Programación
IF y SWITCH: Claves para una Lógica de Programación
bvaldivieso014
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
Maria Celeste Trujillo Cruz
 

Último (12)

sesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWAREsesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWARE
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
APLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdfAPLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdf
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
 
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
 
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) -  JRM - APSTI I ADuckDuckGo (Motor de Busqueda) -  JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
 
PLUGIN (Mary Cielo Huañec Paz) .pdf
PLUGIN (Mary Cielo Huañec Paz)      .pdfPLUGIN (Mary Cielo Huañec Paz)      .pdf
PLUGIN (Mary Cielo Huañec Paz) .pdf
 
Aplicación de las sentencias de control en telecomunicaciones
Aplicación de las sentencias de control en telecomunicacionesAplicación de las sentencias de control en telecomunicaciones
Aplicación de las sentencias de control en telecomunicaciones
 
IF y SWITCH: Claves para una Lógica de Programación
IF y SWITCH: Claves para una Lógica de ProgramaciónIF y SWITCH: Claves para una Lógica de Programación
IF y SWITCH: Claves para una Lógica de Programación
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
 

Crear una dll en C++ y llamarla con la interfaz C#

  • 1. Se trata de crear una dll dinámica con C++ en el cual hace una operación matemática y lee un mensaje de texto. Creamos un proyecto nuevo de la dll que lo llamo en este caso Super_DLL.
  • 2. Crear código en Super_dll.cpp. extern "C" { __declspec(dllexport) int WINAPI Suma(int, int); __declspec(dllexport) LPTSTR WINAPI Mensaje(); }; // Suma. int WINAPI Suma(int a, int b) { return a + b; } // Mensaje. LPTSTR WINAPI Mensaje() { return LPTSTR(L"Hola. Soy una DLL Win32."); }
  • 3. Crear un archivo de texto llamado Super_dll.def en Archivos de origen.
  • 4. Llamamos al archivo de texto Super_dll.def.
  • 5. Dentro del archivo rellenar estos códigos. LIBRARY Super_dll EXPORTS Suma Mensaje
  • 8. Pulsar Aplicar y Aceptar. Agregamos un nuevo proyecto en Visual C#.
  • 9.
  • 10. Arrastramos dos etiquetas o labels en el formulario.
  • 11. Vemos el código del formulario y introducimos este. using System; using System.Runtime.InteropServices; // No olvidar. using System.Windows.Forms; namespace Interfaz_cs { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { label1.Text = Marshal.PtrToStringAuto(SUPER_DLL.Mensaje()); label2.Text = SUPER_DLL.Suma(1764, -764).ToString(); } internal class SUPER_DLL { [DllImport("Super_dll.dll")] extern static public int Suma(int a, int b); [DllImport("Super_dll.dll")] extern static public IntPtr Mensaje(); } } }
  • 12. Borrar código de abajo en dllmain.cpp BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } Queda así abajo.
  • 13. Establecer como proyecto. En el proyecto Super_dll dar Compilar.
  • 14. Una vez compilado la DLL llamada Super_dll.dll vamos al directorio para arrastrarla a otro directorio, o simplemente lo copiamos y pegamos en otro lugar. En este caso está aquí la dll compilada. C:UsersMetaDocumentsVisual Studio 2017ProjectsSuper_dllDebug Al copiar el archive Super_dll.dll, lo pegamos en el proyecto, precisamente en el ejecutable de la interfaz de C#, llamado Interfaz_cs.exe. Super_dll.dll al lado de Interfaz_cs.exe
  • 15. Pulsar F5 y ejecutar la aplicación. http://electronica-pic.blogspot.com/