Buenos días compañeros.
No tengo idea de PowerShell. He creado una dll con Visual C++ nativo y a 64 bits. Hice un ejemplo con una interfaz de consola C# y me lee la dll de C++ nativo.
Dejo un ejemplo.
Código C#:
using System;
using System.Runtime.InteropServices; // No olvidar.
namespace Consola_cs
{
class Program
{
// Importar dll.
[DllImport("MyDLL.dll")]
extern static public int Suma(int a, int b);
[DllImport("MyDLL.dll")]
extern static public IntPtr Mensaje();
static void Main()
{
// 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;
// Llamando a la dll para mostrar un mensaje y una suma.
Console.WriteLine(Marshal.PtrToStringAuto(Mensaje()));
Console.WriteLine(Suma(1764, -764).ToString());
// Pulse cualquier tecla para salir.
Console.ReadKey();
}
}
}
DLL hecho con C++:
// dllmain.cpp : Define el punto de entrada de la aplicación DLL.
#include "pch.h"
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;
}
extern "C"
{
__declspec(dllexport) int WINAPI Suma(int, int);
__declspec(dllexport) LPTSTR WINAPI Mensaje();
};
// Suma.
int WINAPI Suma(int a, int b) { return a + b; }
// Mensaje.
LPTSTR WINAPI Mensaje() { return LPTSTR(L"Hola. Soy una dll de C++ nativo."); }
El archivo dll que he creado se llama MyDLL.dll y quiero saber si PowerShell es capaz de leer las dll y que funciona. Esta dll solo hace una suma y muestra un mensaje en pantalla.
¿Es posible que PowerShell sea capaz de leer una dll?
Si es cierto. ¿Cómo se hace?
Un cordial saludos.