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

  • 问题

  • 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.


    http://electronica-pic.blogspot.com

    2020年6月19日 21:02