- Home /
How do I cast an IntPtr to another class?
I'm currently trying to edit an extern method to just call another static method directly. (this is Mono.Sqlite.Data's UnsafeNativeMethods class). I'm assuming there has to be some kind of cast or dereference done? I'm not very familiar with IntPtrs and was also hoping to get some insight into how they work. I assumed that since these were both CSharp methods and not C/C++ there shouldn't be too big a problem? Thanks!
Specifically, I want the extern function:
[DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
internal static extern void sqlite3_result_blob(IntPtr pCtx, byte[] value, int n, IntPtr pvReserved);
to call the method:
sqlite3_result_blob(Community.CsharpSqlite.Sqlite3.sqlite3_context pCtx, string value, int n, Community.CsharpSqlite.Sqlite3.dxDel pvReserved);
But I can't figure out how to cast the IntPtr to Sqlite3.sqlite3_context. Or vice versa. Any help would be appreciated!
I'm not good with IntPtr either, but would it be possible to do something like the following? It uses conversion of types, from IntPtr to the other sqlite types. I'm not quite sure if sqlite3_context and dxDel are types or pointers, so I have assumed they are types.
[DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
internal static extern void sqlite3_result_blob(IntPtr pCtx, byte[] value, int n, IntPtr pvReserved) {
sqlite3_result_blob(*((Community.CsharpSqlite.Sqlite3.sqlite3_context *)pCtx.ToPointer()), System.Text.Encoding.UTF8.GetString(value), n, *((Community.CsharpSqlite.Sqlite3.dxDel *)pvReserved.ToPointer()));
}
Your answer
Follow this Question
Related Questions
Referencing a DLL in C# 0 Answers
How do you use a class from a .dll file? 1 Answer
Cast Vector3[] to float3[] 1 Answer
Native plugin problems with varargs on iOS (Opus) 0 Answers
NullReferenceException in a wrapper 0 Answers