Tengo un dll de C++ no administrado para el que no tengo acceso al código pero tengo todas las declaraciones de métodos para.llamar código de C++ no administrado desde C# usando pinvoke
Lets por simplicidad decir que .h se parece a esto:
#include <iostream>
#ifndef NUMERIC_LIBRARY
#define NUMERIC_LIBRARY
class Numeric
{
public:
Numeric();
int Add(int a, int b);
~Numeric();
};
#endif
y el método de aplicación en el archivo .cpp
int Numeric::Add(int a, int b)
{
return (a + b);
}
Simplemente quiero llamar a la función suma de C++ en mi código C# :
namespace UnmanagedTester
{
class Program
{
[DllImport(@"C:\CPP and CSharp Project\UnmanagedNumeric\Debug\numeric.dll", EntryPoint = "Add")]
public static extern int Add(int a, int b);
static void Main(string[] args)
{
int sum = Add(2, 3);
Console.WriteLine(sum);
}
}
}
Después de intentar ejecutar tengo el siguiente error:
No se pudo encontrar un punto de entrada llamado 'Agregar' en la DLL 'C: \ CPP and CSharp Project \ UnmanagedNumeric \ Debug \ numeric.dll'.
NO PUEDO cambiar el código de C++. No tienes idea de lo que está pasando mal. Apreciar tu ayuda.
¿No es el método miembro de una clase? No en el espacio de nombres público? – Tim
No soy un experto en código no administrado en C#, pero asumo que dado que Add es un método dentro de Numeric, lo más probable es que necesites hacer una instancia de Numeric y llamar al método en esa instancia. Si fuera estático, tal vez su enfoque habría funcionado. –