SQL server Analysis Services & SQL Server Reporting Services.pptx
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.
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.
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/