Я пробовал VS2015 с моим существующим решением, и я получаю некоторые допустимые новые ошибки (например, недостижимый код, который компилятор раньше не ловил), но я также получаю ошибку, например, в этой строке :C# 6/C++ ref ключевое слово error
bool bWasAlreadyLocked = false;
oEnv.LockDoc(oWarnings, oEventDoc, ref bWasAlreadyLocked);
Я получаю следующее сообщение об ошибке:
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]'
Я не могу понять, почему это было бы бросить эту ошибку, очевидно, типы сделать матч. Является ли это ошибкой в новом компиляторе или изменилось поведение ключевого слова ref
?
Функция в этом случае является функцией C++, которая импортируется на C#, используя класс C#, полученный из класса C++. Это подпись это:
void CBkgDocEnvX::LockDoc(
CFIWarningList ^oWarnings,
CBaseDoc ^oBaseDoc,
// Output
bool %rbWasAlreadyLocked)
Это может быть хорошо, чтобы сказать, что я решил использовать VS2013 C++ компилятор для C++ источников в растворе на данный момент, так что с ++ сторона должна быть такой же, как и раньше. Я предполагаю, что что-то в перерыве между C# и C++ изменилось.
Что такое подпись LockDoc? –
Посмотрел, это C++-функция –
И '%' похоже, является оператором отслеживания C++. Не уверен, как справиться с этим в C#. –