Warm tip: This article is reproduced from serverfault.com, please click

其他-将 C++ .lib 和 .h 文件导入 C# 项目?

(其他 - Import a C++ .lib and .h file into a C# project?)

发布于 2013-08-09 15:32:19

我刚刚开始了一个 C# 项目,并且想要导入一个 C++ .lib 及其对应的头 (.h) 文件。

我读过各种帖子都提到.dll,而不是.lib,这让我很困惑。

下图显示了我所指的 .lib 和 .h 文件,我所做的只是将它们拖到项目中。

在此处输入图像描述

谁能指出我如何更清楚地解释如何执行此操作?我相信它不会像看起来那么难。

Questioner
Dan James Palmer
Viewed
0
2,843 2015-12-01 23:22:11

你可以做的是创建一个 C++/CLI 包装器并通过包装器公开你想要使用的库的功能。你可以在 C# 项目中轻松引用创建的包装器 dll。这当然需要一些工作来创建托管/非托管包装器,但从长远来看会有所回报。

要创建托管 C++ 项目,请在 C++ 项目模板 CLR 和类库下选择。在这里你可以链接到你的库,按照你习惯的方式使用头文件。

接下来创建一个新类(参考类)并将你的库包装在其中。一个示例可能如下所示:

LibHeader.h

int foo(...);

你写一个像这样的包装类: Header:

Wrapper.h

public ref class MyWrapper
{
    public:
        int fooWrapped();
};

你的实施:

Wrapper.cpp

#include Libheader.h

int MyWrapper::fooWrapped()
{
     return foo();
}

为简单起见,省略了命名空间和所有好东西。现在,你可以在 C# 代码中使用 MyWrapper,就像使用任何其他托管类一样简单。当然,当 lib 的接口变得更复杂时,你必须多考虑一下,但这可能有助于将 lib 代码与你的应用程序分开。希望能对此有所了解。