自從.NET以前我沒有用C++編寫程序 - 對於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#不?它需要一個深層副本還是隻是一個淺層?我需要知道從(託管/ CLI/CLR)C++調用C#DLL的其他問題?
我想你需要'CScannerBeam ^'。 – SLaks
歡迎來到C++,其中對象有一個內容 - 在C++/cli中,您必須處理託管指針T ^(指針T *,引用T&和簡單值T) –
@DieterLücking:'T ^'是一個「追蹤句柄」。不要忘記追蹤參考'T%'。 ''interior_ptr'。 –