Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] C# wrapper

Estas en el tema de C# wrapper en el foro de C/C++ en Foros del Web. Hola, Soy nuevo en la creación de wrappers c++/cli y voy un poco perdido. Estoy intentando hacer un wrapper para usar una dll 32 en ...
  #1 (permalink)  
Antiguo 20/05/2015, 01:33
dmb
 
Fecha de Ingreso: mayo-2015
Mensajes: 2
Antigüedad: 9 años, 6 meses
Puntos: 0
C# wrapper

Hola,
Soy nuevo en la creación de wrappers c++/cli y voy un poco perdido. Estoy intentando hacer un wrapper para usar una dll 32 en c++ desde una aplicación c#. Esta dll en c++ tiene una función que me rellena un char[64]. Necesitaría recibir en la aplicación c# este char[64] dentro de una estructura. He creado esta estructura en c# de la siguiente manera:


[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct ClientData
{
public int clientId;
public string clientName;
}

En la dll en c++ tengo que crear la correspondiente estructura para poder rellenar ese ClientData (recibido por referencia). Tengo dudas en como crear esta estructura en c++. La que tengo actualmente es:

typedef struct ClientData
{
LONG clientId;
LPTSTR clientName;
}


La función en c++ que llamo desde c# es la siguiente:

extern "C" __declspec(dllexport) int GetClientt(LONG clientId, ClientData* pClientData )
{
char str[15] = "Nombre cliente";
strcpy(pClientData->clientName, str);
}

También tengo dudas en como rellenar el pClientData->clientName.

Alguien me puede ayudar e indicarme cual sería la mejor forma de hacerlo? No me importaría en cambiar los tipos dentro de las estructuras para recibir ese string.

Muchísimas gracias de antemano!!!!!!

Última edición por dmb; 20/05/2015 a las 03:42
  #2 (permalink)  
Antiguo 20/05/2015, 06:49
dmb
 
Fecha de Ingreso: mayo-2015
Mensajes: 2
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: C# wrapper

Hola,

Ya lo he solucionado. Finalmente Lo he hecho con char[].

Etiquetas: char, int, struct, wrapper
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:03.