Я до сих пор не программировал на C++ .Net - для Windows я теперь использую C# и .Net.Что вызывает эту ошибку в приложении C++, вызывающем C# DLL?
У меня есть C# .Net DLL, которую я вызываю из других программ на C# без проблем. Но у меня есть клиент, который хочет называть его с C++, поэтому я пишу приложение для практики, чтобы посмотреть, как это делается. N.B. это C++/CLI, т. е. это управляемое приложение CLI-CIL-CLR.
В моей программе на C# я добавляю свою DLL в качестве ссылки, тогда в своем коде у меня есть с помощью оператора, а затем создайте его. , ,
using ScannerBeam;
. . .
CScannerBeam SB = new CScannerBeam();
. , , работает с удовольствием, никаких проблем. Но в C++ я также добавляю DLL в качестве ссылки и делаю
using namespace ScannerBeam;
. . .
CScannerBeam SB = gcnew CScannerBeam();
... и я получаю сообщение об ошибке. , ,
Ошибка 1 Ошибка C3673: 'ScannerBeam :: CScannerBeam': класс не имеет копию-конструктор
Почему нужен конструктор копирования, когда C# не делает? Нужна ли вам глубокая копия или просто мелкая? Любые другие gotchas мне нужно знать, вызывая C# DLL из (управляемый/CLI/CLR) C++?
Я думаю, что вам нужно '' CScannerBeam ^. – SLaks
Добро пожаловать в C++, где объекты имеют контент - в C++/cli вам нужно иметь дело с управляемыми указателями T^(указатели T *, ссылки T & и простые значения T) –
@ DieterLücking: 'T ^' - это «отслеживающий дескриптор». И не забудьте ссылку отслеживания 'T%'. И 'interior_ptr'. –