El codigo fuente de la dll sería:
#include "stdafx.h"
#define DLL_EXPORT extern "C" __declspec(dllexport)
DLL_EXPORT double Sum(double a, double b);
double Sum(double a, double b)
{
return a+b;
}
y el de la clase en c++ que lo consume sería:
#include "stdafx.h"
#include <iostream>
extern "C" __declspec(dllimport)double Sum(double a, double b);
using namespace std;
int main(){
cout << "hola dll" << endl;
cout << "La suma de 2 + 3 es:" << Sum(2,3);
getchar();
return 0;
}
Y ahora en este segundo video creo un proyecto de consola de c# desde
el cual también consumiremos los métodos de nuestra DLL.
El código de la clase Wrapper:
namespace UseDLLCSharp
{
class WrapperDLL
{
[DllImport("DLL.dll")]
public static extern double Sum(double a, double b);
}
}
El código de la clase principal de C#:
namespace UseDLLCSharp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("hola mundo");
Console.WriteLine("La suma de 3 + 2 es: " + WrapperDLL.Sum(3, 2));
Thread.Sleep(5000);
}
}
}
2 comentarios:
:-) Guay. Es curioso, con gcc, a diferencia de visualC todos los símbolos de funciones son exportados por defecto sin ningún tipo de declaración y no hay que hacer eso. Al menos es así en linux, supongo que con mingw será igual.
Saludos.
Estupendo Pablo si te animas puedes publicar con un comentario como sería el código usando gcc.
Publicar un comentario