Hi ...
ich habe hier ein kleines Problem, wir haben in einer c# App eine externe DLL eingebunden, welche wir nun leider nachprogrammieren müssen - ich komme damit aber gar nit zurecht ...
Folgendes hab ich mal in C gebaut, aber mit dem comm_handle hab ich das erste PRoblem ...
Auch mit dem Callback (ich hab das mal abgewandelt auf nur ein int - da kommt absolut nicht das passende in der callback-routine an ...
Kann mir hier jemand als C-Loser unter die Arme greifen ? 😉 Wie deklariere ich das in C richtig ?
Gruss,
nekron
typedef struct Response
{
LPSTR data;
long ts;
} t_Response;
typedef int (* Callback)(t_ResponseInfo);
extern "C" __declspec(dllexport) int GetResponse( INT_PTR hndl, Callback cb)
{
Response resp;
cb(resp);
return 1;
}
internal class Response
{
[MarshalAs(UnmanagedType.LPStr)]
public string data;
[MarshalAs(UnmanagedType.U8)]
public long ts;
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate int PassResponseCallback(Response info);
[DllImport("DeviceTool", CallingConvention = CallingConvention.Cdecl)]
internal static extern int Getesponse(CommSafeHandle comm_handle, PassResponseCallback resp_cb);
Hallo nerkon,
ich sehe hier zwei mögliche Ursachen:
Grüße
spooky