如何从C++项目中调用C# Windows Form项目的函数
C++ CLR项目调用C# WinForm DLL常见问题解答
1. CLR项目是否支持C++与C#双向互调?
支持。C++/CLI(CLR项目的实现语言)的设计目标就是打通原生C和.NET托管代码的交互链路,双向调用能力完全兼容:既支持C#调用C/CLI封装的原生函数,也支持C++/CLI项目直接调用C#的托管类与方法,C#调C++的资料更多仅因为该类需求场景更普遍,反向调用逻辑完全合法可用。
2. 是否可以直接调用C# WinForm项目生成的DLL,还是需要额外新建C#类库项目?
不需要额外新建C#类库项目。只要你的WinForm项目已配置生成DLL、且待调用的类和成员的访问修饰符为public,即可直接被CLR项目引用调用。如果待调用的逻辑和WinForm UI耦合度较高,从可维护性角度建议后续抽离为独立类库,但不抽离不影响当前功能实现。
3. CLR项目中调用C#类的配置方法
你自行找到的配置方案完全正确,完整操作步骤如下:
- 先确认C# WinForm项目已成功生成DLL,待调用的
Encrypter类及对应方法均声明为public - 选中CLR项目后,点击Visual Studio顶部的「项目」菜单,选择「添加引用」
- 若两个项目在同一解决方案下,切换到「项目」标签页勾选对应C#项目即可;若为单独编译的DLL,切换到「浏览」标签页选中生成的DLL文件
- 引用添加完成后,在C++/CLI代码头部添加
using namespace 你的C#类对应的命名空间;即可正常调用对应C#类和函数,Visual Studio会正常识别相关命名空间和成员。
内容的提问来源于stack exchange,提问作者Benzine
相关产品推荐
相关产品推荐

