Como hace unos dias prometi que escribiria un ejemplo de como usar una dll escrita en c con el entorno de programacion dev-cpp aqui pongo lo prometido.
Codigo escrito en c, dllmain.c
#include "dll.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
DLLIMPORT __stdcall void hola ()
{
printf("hola\n"
;
}
DLLIMPORT __stdcall int suma(int a, int b)
{
return (a+b);
}
DLLIMPORT __stdcall char* cadena(char* s)
{
strcat(s,"b"
;
return (s);
}
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
/* Returns TRUE on success, FALSE on failure */
return TRUE;
}
codigo dll.h
#ifndef _DLL_H_ #define _DLL_H_ #if BUILDING_DLL # define DLLIMPORT __declspec (dllexport) #else /* Not BUILDING_DLL */ # define DLLIMPORT __declspec (dllimport) #endif /* Not BUILDING_DLL */ DLLIMPORT __stdcall void hola (void); DLLIMPORT __stdcall int suma(int, int); DLLIMPORT __stdcall char* cadena(char*); #endif /* _DLL_H_ */
Y a continuacion pongo el codigo que llama a la dll desde visual basic .net
Imports System.Runtime.InteropServices
Module Module1
Private Declare Function cadena Lib "c:\dev-cpp\Proyecto1.dll" (ByVal s As String) As String
Private Declare Sub hola Lib "c:\dev-cpp\Proyecto1.dll" ()
Private Declare Function suma Lib "c:\dev-cpp\Proyecto1.dll" (ByVal a As Integer, ByVal b As Integer) As Integer
Sub Main()
Dim i As Integer
i = suma(5, 4)
hola()
Console.WriteLine("Resultado: " & i)
Dim ss As String = "a"
Console.WriteLine("Resultado: " & cadena(ss))
Console.ReadKey()
End Sub
End Module


