Todavía con esto, la verdad es que si. Descansé un poco haciendo otros programas de cálculos de litros de un depósito en C#, ajajajjajajajajjaa, pero funciona. Siguiendo el tema. Voy a comentar poco a poco los pasos.
Creo la dll llamada Super_dll.dll. El archivo del código fuente es esto.
Super_dll.cpp:
Código
#include "pch.h" 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; } int __stdcall Suma(int a, int b) { return a + b; } // Mensaje. //LPTSTR WINAPI Mensaje() { return LPTSTR(L"Hola. Saludos desde la dll."); } LPTSTR __stdcall Mensaje() { return LPTSTR(L"Hola. Saludos desde la dll."); }
Consola_win32_cpp.cpp:
Código
#include <iostream> #include <windows.h> using namespace std; typedef int(__stdcall* Suma)(int, int); typedef LPTSTR(__stdcall* Mensaje)(); int main() { HINSTANCE hDLL = 0; Suma suma; Mensaje mensaje; hDLL = LoadLibrary(L"C:\\Users\\Usuario\\Documents\\Visual Studio 2019\\Projects\\Super_DLL\\x64\\Debug\\Super_dll.dll"); suma = (Suma)GetProcAddress(hDLL, "Suma"); mensaje = (Mensaje)GetProcAddress(hDLL, "Mensaje"); cout << mensaje() << endl; cout << suma(1764, -764) << endl; FreeLibrary(hDLL); // Esperando pulsar Enter para salir. cin.get(); return 0; }
Super_dll.def:
Código:
LIBRARY Super_dll
EXPORTS
Suma
Mensaje
La buena noticia que por fin me lee la dll. La no tan buena, en vez de mostrar el texto desde la dll, se muestran números.
Código
00007FFD54CC9880 1000
Pensaba usar en Marshal.
Código
cout << Marshal.PtrToStringAuto(mensaje()) << endl;
Se que si uso el Marshal, los números se verán el texto de la dll.
Ahora estoy chasmusqueándome las neuronas por esto. De alguna forma se tiene que poder. Al menos el paso que hemos dado, es que lea la dll. Todavía necesito ayuda.
Gracias por todo.



