【问题标题】:Creating simple c++.net wrapper. Step-by-step创建简单的 c++.net 包装器。一步步
【发布时间】:2011-02-07 22:00:20
【问题描述】:

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

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

求救

【问题讨论】:

  • +1 听起来像我在完全相同的情况下一样绝望和无知:)

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


【解决方案1】:

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),而不是类。

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2011-10-25
    相关资源
    最近更新 更多