estoy haciendo una aplicacion en c# donde quiero importar una dll ya creada en c++ pero al ejecutarla me da el error:
Citar
No se puede encontrar el punto de entrada denominado 'suma' en el archivo DLL 'DLL_lib.dll'.
el codigo de la dll es el siguiente:
.h
Código:
#ifdef DLL_LIB_EXPORTS
#define DLL_LIB_API __declspec(dllexport)
#else
#define DLL_LIB_API __declspec(dllimport)
#endif
// Clase exportada de DLL_lib.dll
class DLL_LIB_API CDLL_lib
{
private:
int a;
int b;
public:
CDLL_lib(void);
// TODO: agregar métodos aquí.
double multiplica();
int getA();
int getB();
void setA(int a);
void setB(int b);
};
DLL_LIB_API int suma(void);
extern DLL_LIB_API int nDLL_lib;
DLL_LIB_API int fnDLL_lib(void);
.cpp
Código:
#include "stdafx.h"
#include "DLL_lib.h"
#ifdef _MANAGED
#pragma managed(push, off)
#endif
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;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
// Ejemplo de variable exportada
DLL_LIB_API int nDLL_lib=0;
// Ejemplo de función exportada.
DLL_LIB_API int fnDLL_lib(void)
{
return 42;
}
DLL_LIB_API int suma(void)
{
return 5+5;
}
// Constructor de clase exportada.
// Consultar DLL_lib.h para definir la clase
CDLL_lib::CDLL_lib()
{
this->a = 0;
this->b = 0;
}
int CDLL_lib::getA()
{
return a;
}
int CDLL_lib::getB()
{
return b;
}
void CDLL_lib::setA(int a)
{
this->a = a;
}
void CDLL_lib::setB(int b)
{
this->b = b;
}
double CDLL_lib::multiplica()
{
return (double)a*b;
}
y el archivo .cs
Código:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace app_usa_dll
{
class Program
{
/// <summary>
/// Punto de entrada principal para la aplicación.
/// </summary>
[STAThread]
[DllImport(/*" ..\\..\\..\\debug\\*/"DLL_lib.dll")]
public static extern int suma();
[DllImport(/*" ..\\..\\..\\debug\\*/"DLL_lib.dll")]
public static extern void setA(int a);
[DllImport(/*" ..\\..\\..\\debug\\*/"DLL_lib.dll")]
public static extern void setB(int b);
[DllImport(/*" ..\\..\\..\\debug\\*/"DLL_lib.dll")]
public static extern double multiplica();
[DllImport(/*" ..\\..\\..\\debug\\*/"DLL_lib.dll")]
public static extern int getA();
[DllImport(/*" ..\\..\\..\\debug\\*/"DLL_lib.dll")]
public static extern int getB();
static void Main()
{
int a = 0;
int b = 0;
double c = 0;
int res = 0;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//funciones de la dll
try
{
/*a = setA(int.Parse(textBox3.Text));
b = setB(int.Parse(textBox2.Text));
c = multiplica();*/
res = suma();
setA(int.Parse("5"));
a = getA();
setB(int.Parse("6"));
b = getB();
c = multiplica();
res = suma();
}
catch (DllNotFoundException exc)
{
Console.WriteLine(exc.ToString());
}
catch (EntryPointNotFoundException exc)
{
Console.WriteLine(exc.ToString());
}
Application.Run(new Form1(a, b, c, res));
}
}
}
Gracias a todos