Hola, como os va por aquí !
Bueno hoy traigo este "problemon" resulta que tengo una DLL ya compilada en C++ la cual no puedo modificar el codigo fuente y necesito utilizar una de sus funciones
ya tengo encuenta que tengo que pasar una String por la "Char*" de C++ que en Delphi equivale a PChar
Bueno, buscando información he intentado varias maneras, alojando memoria con getmem, usando un array de char y demas chorradas pero una de 2, o no tengo ninguna respuesta o bytes basura, debería ser sencillo de arreglar pero buscando solo veo ejemplos para el lenguaje .NET, para ese tipo de llamada a la "Char*" bueno, le he dado 1000 vueltas, espero que alguien me pueda iluminar un poco
Hice un ejemplo sencillo de una DLL en C++ para emular el problema e ir buscando una solución.
Código Delphi
[-]program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
function Test(Modulo: integer; funcName: PChar): Boolean; external 'dll1.dll' name 'Test';
var
Buffer: PChar;
begin
Buffer := 'Hola Soy Un Texto';
Test(0, Buffer);
end.
En C++
Código PHP:
#include "stdafx.h"
#include <Windows.h>
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
return TRUE;
}
extern "C" __declspec(dllexport) DWORD64 Test(DWORD64 hModule, char* funcName)
{
MessageBoxA(0, funcName, "", 0);
return TRUE;
}
https://prnt.sc/lfoe34