我正在尝试在第三方基于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
如果这是唯一的方法,任何人都可以帮我一些例子吗?
答案 0 :(得分:3)
创建.NET程序集时,可以设置一个复选框以使其具有 为COM互操作注册的程序集。这将允许您访问它 从任何可以调用COM的语言。 (C可以不行吗?很长一段时间 因为我接触过C或C ++。)
配置属性 - >构建项目属性的页面。 寻找“注册COM Interop”。
答案 1 :(得分:2)
使用this project将C#函数导出为本机入口点。