Ich habe eine einfache Anwendung, die eine nicht verwaltete DLL lädt und einige Zeichenfolge Werte aus C# übergeben. Aber in der C++ - DLL-Anwendung erhalte ich eine Ausnahme: Versucht, auf einen schreibgeschützten Speicher zuzugreifen. Meine DLL Import sieht wie folgt aus:Übergabe C# Zeichenfolge an nicht verwaltete C++ DLL
[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);
und die C++ Deklaration ist wie
extern "C"
__declspec(dllexport) int DumpToDBLogFile(int loggingLevel, int jobId, int threadId, string procName, string message)
{
//access strings..
}
Hilfe bitte !!!
Scheint, dass Code in C++ nicht auf den Heap in C# zugreifen kann. – Kangkan