Ho provato VS2015 con la mia soluzione esistente e ho ricevuto alcuni nuovi errori validi (come il codice irraggiungibile che il compilatore non ha catturato prima), ma ho anche un errore per esempio su questa linea :C# 6/C++ ref Parola chiave errore
bool bWasAlreadyLocked = false;
oEnv.LockDoc(oWarnings, oEventDoc, ref bWasAlreadyLocked);
ottengo il seguente errore:
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]'
non riesco a capire perché getterebbe tale errore, ovviamente, i tipi corrispondono. Si tratta di un bug nel nuovo compilatore o il comportamento della parola chiave ref
è cambiato?
La funzione in questo caso è una funzione C++ che viene importata in C# utilizzando una classe C# derivata dalla classe C++. E 'firma è questa:
void CBkgDocEnvX::LockDoc(
CFIWarningList ^oWarnings,
CBaseDoc ^oBaseDoc,
// Output
bool %rbWasAlreadyLocked)
Potrebbe essere buono di dire che ho optato per utilizzare il compilatore VS2013 C++ per il C++ fonti nella soluzione, per ora, in modo che il C++ lato dovrebbe essere la stessa di prima. La mia ipotesi è che qualcosa nell'interp tra C# e C++ sia cambiato.
Qual è la firma di 'LockDoc'? –
Cercalo, è una funzione C++ –
E '%' sembra essere un operatore di localizzazione C++. Non sei sicuro di come gestirlo in C#. –