【问题标题】:How do I call methods in a C# dll from my C code?如何从我的 C 代码调用 C# dll 中的方法?
【发布时间】:2012-04-26 14:23:18
【问题描述】:

我正在尝试在基于 Lisp 的第 3 方程序(我们称之为 ABC)和我自己编写的 C# 程序(我们称之为 DEF)之间创建一个集成。 问题是 ABC 只能调用用 C 或 Fortran 创建的程序集。 所以我开始学习 C,我得到了“hello world”测试,ABC 调用我的 C dll 并得到“hello world”作为回报。 我尝试使用显式加载和 GetProcAddress 从 C 代码调用我的 DEF dll。如果我调用另一个 C dll,但不是 C# dll,它会起作用。 现在我想知道我是否必须学习 C++ 并从 C++ 调用 C# 来创建这个漂亮的调用链:

ABC -> C -> C++ -> DEF(C#) -> C++ -> C -> ABC

如果这是唯一的方法,谁能帮我举一些例子等吗?

【问题讨论】:

  • 您是否为 COM 互操作注册了您的 c# dll?我过去做过,有可能。
  • 如果回答了,请不要忘记将您的问题标记为已回答(检查答案的否决按钮下的钩子)。

标签: c# c++ c


【解决方案1】:

当您创建一个 .NET 程序集时,您可以设置一个复选框以使 为 COM 互操作注册的程序集。这将允许您访问它 来自任何可以调用 COM 的语言。 (C不能吗?好久不见 因为我接触过 C 或 C++。)

配置属性 -> 项目属性的构建页面。 寻找“注册 COM 互操作”。

【讨论】:

  • 这不起作用。 C仍然无法在dll中找到程序地址。
【解决方案2】:

使用 this project 将 C# 函数导出为本机入口点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多