如何将头文件导入到导入C ++ dll的C#项目中

时间:2009-02-18 11:58:31

标签: c#

C ++ dll使用的头文件包含一些用户定义的类型定义和函数声明。我浏览过很多站点,所有的海报都说不可能将头文件导入C#。我想知道是否有是否可以将头文件导入C#代码,因为需要在C#应用程序类中声明导入的dll的函数。

由于

3 个答案:

答案 0 :(得分:1)

您是否考虑过与C++/CLI项目弥合这一差距?如果在C ++ / CLI项目中编写所有包装器库和互操作性代码,则可以轻松定义在C / C ++头文件中公开定义的托管类型。

答案 1 :(得分:1)

这或多或少是Importing a C++ dll in C#的副本,但该问题有一些不良的“信息精简”答案。

不幸的是,对此没有简短的答案,但你有几个选择。

  1. 将您的C ++类包装在托管C ++中 类。然后就是你的C#项目 引用托管C ++项目, 一切正常。
  2. 像1一样,创建一个托管C ++类, 但要创造一个立面。这是 简化您班级的界面 仅暴露您的功能 需要。
  3. 另一种方法是使用PInvoke 调用类上的方法。 你需要构建一个C# 该类的代表 pinvoke电话。这可以 有问题,涉及很多 如果您不知道,请试错 你正在做什么。
  4. 以上所有内容都涉及学习一些对您来说不熟悉的技术(管理C ++或PInvoke的内部)。不幸的是,别无他法。

    如果你能和我一起去。

答案 2 :(得分:0)

当我对同一个问题进行了子集时 - 给出了用于C / C ++的.h和.lib文件,我在C ++中用托管扩展编写了一个包装器。这真的很简单。您的C ++程序集将在您的Visual Studio解决方案中巧妙地运行,您将能够从C#单步执行到托管C ++到非托管C ++,并轻而易举地重新点亮! : - )