从 C# 调用 C++ 代码而不创建 dll?

Mr.*_*rck 1 c# c++ dll

我是 C# 菜鸟,我已经在网上搜索过。不管怎样,我仍然不确定这一点,而且我无法完全控制我必须实现的代码,这就是为什么我想确保我不需要制作任何 dll。我有一个带有方法的 C++ 文件,我想从 C# 代码调用该方法。我刚刚将“extern C”添加到该函数中。

当我将 .h 和 .cpp 文件添加到 C# 项目时,未检测到它们。当然,当我尝试将其添加为参考时,它不起作用。

那么我绝对必须制作一个dll吗?

Dav*_*nan 5

从 C# 访问 C++ 代码的选项:

  • 将 C++ 编译为非托管 DLL 并使用 p/invoke 进行访问。这需要使用 C 风格的 API 公开 C++ 代码。
  • 将 C++ 编译为非托管 DLL 并使用 COM 进行访问。这要求您将 C++ 包装为 COM 对象。
  • 将 C++ 编译为混合/模式 C++/CLI 程序集,并将该程序集作为托管引用访问。这要求您将原始 C++ 包装为托管 C++ 引用类。

所有这些选项都必然涉及另一个模块/程序集的创建。您无法将 C++ 代码直接链接到 C# 程序集中。