Hola, estoy haciendo un proyecto en C# y C++ con el Visual Studio. La interfaz está hecha en C# y el "corazón" del programa está en una librería hecha en C++.
#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í:
[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.