创建简单的c ++ .net包装器。一步步

时间:2010-04-14 13:10:36

标签: c# .net c++ dll wrapper

我有一个c ++项目。我承认我在c ++中是一个完整的零。但是我仍然需要编写一个c ++ .net包装器,这样我就可以使用非托管的c ++库。所以我有: 1)非托管项目的头文件。 2)非托管项目的库(.dll和.lib) 3)一个空的C ++ .NET项目,我打算用它作为我的c#应用程序的包装器

我该如何开始?我甚至不知道如何设置对非托管库的引用。

S.O.S。

2 个答案:

答案 0 :(得分:35)

http://www.codeproject.com/KB/mcpp/quickcppcli.aspx#A8

这是大方向。您需要创建C ++ / CLI类库项目,向其添加.NET类(此示例中为StudentWrapper),创建非托管类实例作为托管类成员,并包装每个非托管类函数。非托管库使用链接器依赖项列表添加到C ++ / CLI项目,而不是作为引用。在Project - Properties - Linker中打开Additional Dependencies并在那里添加.lib名称。

注意:既然我们谈论的是C ++ / CLI包装器,那么没有PInvoke! PInvoke用于调用导出的函数(API),而不是类。

答案 1 :(得分:8)

您需要使用.NET中的p/invoke与您的非托管DLL进行通信。

基本上,您为要在非托管DLL中调用的每个函数创建一个函数头,并告诉.NET函数所在的DLL,然后只需在.NET包装器中调用该函数。

您甚至不需要任何C ++知识 - 只要您知道非托管DLL中函数的函数定义以及正确的数据类型。