// $nombredeproyecto$.cpp: define las funciones exportadas de la aplicación DLL.
//
#include "stdafx.h"
extern "C" {
__declspec(dllexport) int WINAPI Suma(int, int);
__declspec(dllexport) LPTSTR WINAPI Mensaje();
}
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;
}
int WINAPI Suma(int a, int b) { return a + b; }
LPTSTR WINAPI Mensaje() { return TEXT("Hola. Soy una DLL Win32."); }
LPTSTR WINAPI Mensaje() { return TEXT("Hola. Soy una DLL Win32."); }
using System;
using System.Runtime.InteropServices; // No olvidar.
using System.Windows.Forms;
namespace Prueba_dll_cs_01
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = Marshal.PtrToStringAuto(PEPE.Mensaje());
label2.Text = PEPE.Suma(1764, -764).ToString();
}
}
internal class PEPE
{
[DllImport("pepe.dll", EntryPoint = "_Suma@8")]
extern static public int Suma(int a, int b);
[DllImport("pepe.dll", EntryPoint = "_Mensaje@0")]
extern static public IntPtr Mensaje();
}
}
LPTSTR WINAPI Mensaje() { return LPTSTR("Hola. Soy una DLL Win32."); }
LPTSTR WINAPI Mensaje() { return LPTSTR(L"Hola. Soy una DLL Win32."); }
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;
})
LPTSTR WINAPI Mensaje() { return LPTSTR(L"Hola. Soy una DLL Win32."); }