title: What causes this error in a C++ app calling a C# DLL?
body: <p>I haven't programmed in C++ since before .Net --  for Windows I use C# and .Net now.</p>
  
  <p>I have a C# .Net DLL that I call from other C# programs with no problems.   But I have a customer who wants to call it from C++ so I'm writing a practice app to see how it's done.   <strong>N.B. this is C++/CLI</strong> i.e., it's a managed, CLI-CIL-CLR app.</p>
  
  <p>In my C# program I add my DLL as a reference then in my code I have a <em>using</em> statement and then instantiate it . . . </p>
  
  <pre><code>    using ScannerBeam;
      . . . 
  
      CScannerBeam SB = new CScannerBeam();
  </code></pre>
  
  <p>. . . works a treat, no problems.   But in C++ I also add the DLL as a reference and do a </p>
  
  <pre><code>    using namespace ScannerBeam;
      . . . 
  
      CScannerBeam SB = gcnew CScannerBeam();
  </code></pre>
  
  <p>...and I get an error . . . </p>
  
  <p><em>Error  1   error C3673: 'ScannerBeam::CScannerBeam' : class does not have a copy-constructor</em></p>
  
  <p>Why does it need a copy constructor when C# doesn't?   Does it need a deep copy or just a shallow one?   Any other gotchas I need to know calling a C# DLL from (managed/CLI/CLR) C++?</p>