Código
#include <Windows.h> //#include "core.h" #include <curl/curl.h> extern "C" __declspec(dllexport) int StartXModule(); BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } int StartXModule() { curl_global_init(CURL_GLOBAL_DEFAULT); return 0; }
La llamada de la función desde C# se hace aquí:
Código
[DllImport("x-module.dll")] private static extern int StartXModule(); private void FMain_Load(object sender, EventArgs e) { PMain.BackColor = System.Drawing.ColorTranslator.FromWin32(0x00373737); //for (int i = 0; i < 30; i++) // listBoxX1.Items.Add("qdwqdqw"); StartXModule(); }
Depurando desde el Visual C# la aplicación se ejecuta correctamente, pero generando la aplicación y ejecutando directamente me da este error:
No se puede cargar el archivo DLL "x-module.dll". No se puede encontrar el módulo especificado. (Excepción de HRESULT: 0x8007007E).
Mi aplicación la forman 2 librerías (libcurl.dll y x-module.dll) y la aplicación hecha en C#. El problema creo que está en que no tiene acceso a la función curl_globla_init() llamando a StartXModule() desde C#, porque si comento esa línea, la función se carga correctamente.
Espero que me podáis ayudar.. Saludos.