6

我正在尝试在基于 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

如果这是唯一的方法,有人可以帮我举一些例子吗?

4

2 回答 2

3

创建 .NET 程序集时,您可以设置一个复选框以使程序集注册为 COM 互操作。这将允许您从任何可以调用 COM 的语言访问它。(C 不行吗?我已经很久没有接触 C 或 C++ 了。)

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

于 2012-04-26T14:31:41.580 回答
2

使用此项目将 C# 函数导出为本机入口点。

于 2012-04-26T14:29:19.590 回答