如何从C代码中调用C#dll中的方法?

时间:2012-04-26 14:23:19

标签: c# c++ c

我正在尝试在第三方基于Lisp的程序(我们称之为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

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

2 个答案:

答案 0 :(得分:3)

  

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

     

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

答案 1 :(得分:2)

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