Ho una semplice applicazione che carica una dll non gestita e passa ad essa alcuni valori stringa da C#. Ma nell'applicazione dll C++, ricevo un'eccezione :: Ho cercato di accedere a una memoria protetta in lettura/scrittura. Il mio DLL Import si presenta così:Passare la stringa C# a una DLL C++ non gestita
[DllImport("X.dll", CallingConvention = CallingConvention.Cdecl) ]
public static extern int
DumpToDBLogFile([MarshalAs(UnmanagedType.I4)]int loggingLevel,
[MarshalAs(UnmanagedType.I4)]int jobId,
int threadId,
[MarshalAs(UnmanagedType.LPStr)]string procName,
[MarshalAs(UnmanagedType.LPStr)]string message);
e dichiarazione di C++ è come
extern "C"
__declspec(dllexport) int DumpToDBLogFile(int loggingLevel, int jobId, int threadId, string procName, string message)
{
//access strings..
}
Aiuto per favore !!!
Sembra che il codice in C++ non sia in grado di accedere all'heap in C#. – Kangkan