PowerShell - ¿Power shell puede leer una dll que creé con C++ nativo?

 
Vista:
sin imagen de perfil
Val: 8
Ha mantenido su posición en PowerShell (en relación al último mes)
Gráfica de PowerShell

¿Power shell puede leer una dll que creé con C++ nativo?

Publicado por Meta (9 intervenciones) el 20/06/2020 02:11:22
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#:
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; // 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++:
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
// 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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder