Ich versuchte VS2015 mit meiner bestehenden Lösung und ich bekomme einige gültige neue Fehler (wie unerreichbarer Code, den der Compiler nicht zuvor gefangen hat), aber ich bekomme auch einen Fehler zum Beispiel in dieser Zeile :C# 6/C++ ref Schlüsselwort Fehler
bool bWasAlreadyLocked = false;
oEnv.LockDoc(oWarnings, oEventDoc, ref bWasAlreadyLocked);
bekomme ich folgende Fehlermeldung:
Error CS1503 Argument 3: cannot convert from 'ref bool [mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]' to 'ref bool [mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]'
ich kann nicht sehen, warum es diesen Fehler werfen würde, offensichtlich die Typen passen. Ist das ein Fehler im neuen Compiler oder hat sich das Verhalten des Schlüsselworts ref
geändert?
Die Funktion in diesem Fall ist eine C++ - Funktion, die mit einer C# -Klasse aus der C++ - Klasse in C# importiert wird. Es ist Unterschrift ist dies:
void CBkgDocEnvX::LockDoc(
CFIWarningList ^oWarnings,
CBaseDoc ^oBaseDoc,
// Output
bool %rbWasAlreadyLocked)
Es könnte gut sein, zu erwähnen, dass ich den VS2013 C++ Compiler für die C++ Quellen in der Lösung für die jetzt zu verwenden, entschieden, so die C++ Seite sollte das gleiche sein wie zuvor. Meine Vermutung ist, dass sich etwas im Interop zwischen C# und C++ geändert hat.
Was ist die Signatur von 'LockDoc'? –
Sah es auf, es ist eine C++ Funktion –
Und '%' scheint ein C++ Tracking-Operator zu sein. Ich bin mir nicht sicher, wie ich in C# damit umgehen soll. –