为DLL创建.NET包装器

时间:2014-12-09 01:45:37

标签: c# c++

我有一个使用Qt在C ++中创建的DLL。但我有项目文件在Visual Studio中打开它并编辑它和诸如此类的东西。我希望能够在我正在制作的C#应用​​程序中使用此库。那么,我需要对项目做些什么才能使它在C#应用程序中具有优势?

我正在阅读有关PInvoke的各种事情,制作.NET包装器等等。我不确定最佳选择是什么以及如何操作。

1 个答案:

答案 0 :(得分:1)

您可以通过在解决方案中创建一个新的C ++ / CLI项目以及实际需要包装的每个类来为C ++类创建.NET包装类,添加一个新项Managed.ClassName.cpp并查看下面的模式

Managed.Rand.cpp (这将是您的C ++ / CLI项目中的新文件,并假设您的本机项目被称为' Logic'以及{{1} } class在Rand名称空间中)

Logic

请记住,#include "../Logic/Rand.cpp" using namespace System; namespace Logic { namespace Managed { public ref class Rand { Logic::Rand * rand; public: Rand(UInt32 seed) { rand = new Logic::Rand(seed); } !Rand() { delete rand; } ~Rand() { this->!Rand(); } // Wrapper methods UInt32 Next() { return rand->Next(); } }; } } 方法(一种析构函数)会导致类自动实现!ClassName,因此您应该将IDisposable的实例包装在using构造中或调用{{当你完成时,在他们身上。简而言之,通常的Managed.ClassName使用模式适用于此。