Leer dll c++ nativo con interfaz C++ CLR
Publicado por Meta (7 intervenciones) el 18/06/2020 12:38:03
Buenas:
Tengo un ejemplo en C# en el cual me lee una dll hecho en C++ nativo. Quiero con el C++ CLR o .net que haga de intergaz y me funcione, pero no se corregir los errores.
Dejo el ejemplo completo y funciona en el lenguaje C#. Quiero adaptar el C# a C++ CLR o .net.
Código C#:
Código con errores y quiero corregirlo en C++ CLR o .net:
¿Alguna idea?
Gracias
Tengo un ejemplo en C# en el cual me lee una dll hecho en C++ nativo. Quiero con el C++ CLR o .net que haga de intergaz y me funcione, pero no se corregir los errores.
Dejo el ejemplo completo y funciona en el lenguaje C#. Quiero adaptar el C# a C++ CLR o .net.
Código C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Runtime.InteropServices;
namespace Consola_cs
{
class Program
{
static void Main(string[] args)
{
// Título de la ventana.
Console.Title = "Consola C# 2019";
// Tamaño de la ventana.
Console.SetWindowSize(40, 5);
// Color de las letras.
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(Marshal.PtrToStringAuto(SUPER_DLL.Mensaje()));
Console.WriteLine(SUPER_DLL.Suma(1764, -764).ToString());
// Pulse cualquier tecla para salir.
Console.ReadKey();
}
internal class SUPER_DLL
{
[DllImport("Super_dll.dll")]
extern static public int Suma(int a, int b);
[DllImport("Super_dll.dll")]
extern static public IntPtr Mensaje();
}
}
}
Código con errores y quiero corregirlo en C++ CLR o .net:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "pch.h"
#include <OAIdl.h>
using namespace System;
int main(array<System::String ^> ^args)
{
// Título de la ventana.
Console::Title = "Consola C# 2019";
// Tamaño de la ventana.
Console::SetWindowSize(40, 5);
// Color de las letras.
Console::ForegroundColor = ConsoleColor::Yellow;
Console::WriteLine(Marshal->PtrToStringAuto(SUPER_DLL::Mensaje()));
Console::WriteLine(SUPER_DLL::Suma(1764, -764)::ToString());
// Pulse cualquier tecla para salir.
Console::ReadKey();
return 0;
}
internal class SUPER_DLL
{
[DllImport("Super_dll.dll")]
extern static public int Suma(int a, int b);
[DllImport("Super_dll.dll")]
extern static public IntPtr Mensaje();
}
¿Alguna idea?
Gracias
Valora esta pregunta


0