最近发现C#有很多比较好的功能但是C不能直接使用就想到怎么将C#的功能实现后封装给C使用探索的过程比较长所以整理了一下操作供各位参考。工具Vistual Studio 2019至少是2019版本的才能支持步骤一、安装vs2019后安装.NET的插件找的一篇介绍的比较详细的博客可以参考https://blog.csdn.net/qq_43636251/article/details/104975788二、创建C#工程一定要选择类库(.Net framework)三、创建一个 C# 类库文件定义你要暴露的功能例如Add函数将该功能编写成一个静态函数。程序编写好后点击生成会在对应的生成目录下生成一个dll文件。using System; namespace ClassLibrary1 { public class MathOperations { public static int Add(int a, int b) { return (a b); } } }四、另外创建 C/CLR 类库项目这个只有在vs2019及以上版本才有 作为 C 和 C# 之间的桥梁。创建一个cs文件取名为MyLibraryWrapper点击生成后同样会在对应的生成目录下生成dll文件这时生成的dll文件就可以通过C正常调用了。#include pch.h using namespace System; using namespace ClassLibrary1; public ref class MathOperationsWrapper { public: static int Add(int a, int b) { return MathOperations::Add(a, b); } };注意需要将第三步操作生成的所有dll拷贝到CLR项目下和该项目的目标文件同一个目录即可五、完成步骤4后即可生成一个C/C可以调用的dll文件。需要注意的是上面生成的所有dll也需要放到可执行文件同一级目录方便程序能找到对应的依赖文件。示例 C 代码main.cpp//方式一 #include iostream #include string.h #using MyLibraryWrapper.dll // 引入 C# 的 dll using namespace System; using namespace MyLibraryWrapper; using namespace System::Runtime::InteropServices; extern C __declspec(dllexport) bool Add(int a, int b) { return MyLibraryWrapper::Class1::Add(a, b); }//方式二 #include iostream #using MyLibraryWrapper.dll using namespace System; using namespace MyLibraryWrapper; int main() { int result MathOperationsWrapper::Add(5, 10); std::cout Result: result std::endl; return 0; }