代码之家  ›  专栏  ›  技术社区  ›  shadeMe

从C类库导出函数

  •  4
  • shadeMe  · 技术社区  · 14 年前

    如何导出C类库中定义的函数,同时允许它们从非托管C++应用程序/ DLL导入和调用?

    4 回复  |  直到 14 年前
        1
  •  8
  •   Adam Robinson    14 年前

    严格来说,不能像在经典.dll中那样导出函数,因为.NET.dll根本不是.dll。您只有三种选择:

    1. 使用托管C++
    2. 将C++类暴露为COM对象,并从C++代码中删除它们
    3. Host the .NET runtime in your C++ project 并通过它与您的C类进行交互。
        2
  •  1
  •   TomTom    14 年前

    你不会。不支持。您几乎只能从C类库中导出COM对象。

        3
  •  1
  •   Henk Holterman    14 年前

    您的C++应用将不得不通过承载CLR开始。.NET dll中没有特殊要求。

        4
  •  1
  •   VladV    14 年前

    您还可以为C++库编写一个C++包装器——一个简单的托管C++ DLL,它将导入.NET方法并以本地方式导出它们。这增加了一个额外的层,但是如果C库是必须拥有的,那么它可能会很有用。

    另一个选项是调整已编译的程序集以导出函数。C编译器不能做到这一点,但要完成这一点,需要稍微更改MSIL代码。 看一看 this article -这里有一些关于这些东西如何工作的链接,以及一个自动化它的工具(尽管我自己没有尝试过)。