Archivo de la categoría Programacion en C

¿Que lenguaje de programacion es mejor Aprender?

Todas las veces que a mi me han hecho esta pregunta, siempre he respondido lo mismo; el lenguaje que hoy en dia es mejor aprender es C (si, c puro y duro).

Se que mucha gente me dira que si estoy loco, que si C ya esta desfasado, que no hace uso de la gran programacion orientada a objetos, etc, etc. A lo que yo respondo, si aprendes C bien aprendido, y despues aprendes bien los conceptos de programacion orientada a objetos, con poquisimo esfuerzo ya sabes programar C++, PHP, javascript, entre otros.

Luego si quieres avanzar y ponerte al dia con las nuevas tecnologias de programacion existentes hoy en dia, no te creas que te va a ser muy dificil dar el siguiente paso y aprender C# y java (estos son practicamente lo mismo, salvo algunas pequeñas diferencias, faltaria mas…).

Tambien si sabes C, puedes hacer tus programas para windows y para linux.

Asi que, como conclusion a dia de hoy, el mejor lenguaje para aprender a programar es C.

Segun mi opinion. ;)

Usar una dll escrita en dev-cpp en visual basic .net

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

Etiquetas: , , , ,