【发布时间】:2010-11-25 13:17:28
【问题描述】:
我只是在寻找一种在我的 c++ 项目中重用用 c# 编写的代码的最佳方法。创建 com\service 看起来不是满足我需求的最佳选择。将 c# 代码导出到 dll 并在 c++ 中使用它有多难?我能得到一些建议或例子吗?这是通常的要求还是?请帮我。 我用的是win7、VS2008、win7sdk
谢谢和Rgds,~卡尔文
【问题讨论】:
我只是在寻找一种在我的 c++ 项目中重用用 c# 编写的代码的最佳方法。创建 com\service 看起来不是满足我需求的最佳选择。将 c# 代码导出到 dll 并在 c++ 中使用它有多难?我能得到一些建议或例子吗?这是通常的要求还是?请帮我。 我用的是win7、VS2008、win7sdk
谢谢和Rgds,~卡尔文
【问题讨论】:
从未命名的可执行文件中执行托管代码是可能的,但并不容易。您可以查看this article 的介绍和this book 进一步了解。
我个人会在大多数情况下避免这种事情,并且如果可能的话,将 C++ 项目切换到 C++/CLI,以便以最低成本立即获得与 .Net 程序集的兼容性。
【讨论】:
您无法将 C# 代码导出到本机 dll afaik。至少你的臀部不会很痛。您应该事先考虑并用 C 编写可重用的部分,从而创建一个可以从所有语言中使用的本机 DLL。
另外,您可以尝试托管 C++ - 我个人讨厌它......但是你去吧
【讨论】:
如果您需要使用用 C# C++ 编写的代码,那么您需要首先查看您将从 C++ 代码传递到 C# 代码的所有数据类型。 1. int、enum 等基本数据类型可以从非托管代码传递到托管代码。 2. 如果您想传递类对象,则需要使用编组。
【讨论】:
如果您不能使用 COM(例如,如果已经编写了 .NET 代码),那么您可以托管 CLR,但这是一条漫长的道路……
查看这些其他文章 How to load CLR into process 和 Create a C# DLL That Can Be Imported in a Delphi App Using stdcall - Possible?
【讨论】: