我有一个字节流,我将其分类为结构。现在我需要使用这些结构中的值更新 C# GUI。现在,我已经使用 Google 找到了有关 pinvoke 和 dllimport 的信息,但一切都是从 C# 调用 C 代码,我需要做相反的事情。
C# 代码具有旋转拨号/更新值的函数,所以一旦我获得了我需要的值,我只想调用这些函数,将这些值作为参数,我的 C 代码已全部编写,GUI 已全部编码,并且使用我用鼠标拖动的转盘功能,我只需要将它们粘在一起。
感谢您的帮助!
最佳答案
一般来说,您不能从 C 代码调用 C# 代码。 (您可以从 C 代码返回到 C# 代码,但 C# 端需要启动该过程并传入回调。)
“正确的方法”是 C# 代码调用 C 代码并提供回调函数(查找 UnmanagedFunctionPointer 属性以了解如何将托管委托(delegate)转换为函数指针。)
如果该选项不可行,您有几个替代方案,但没有一个方案会像“将东西粘在一起”那样简单:
- 使用混合模式 C++ 库连接 C 和 C# 代码。这是一团糟,IMO,我只是建议这样做,因为它对您的 C 代码的更改量最少。
- 从您的 C# 代码中公开一个 COM 对象并与 C 中的对象进行通信。比选项 A 稍微不那么困惑,但代价是将 COM 引入组合中。
- 使用某种形式的进程间通信(TCP 套接字、命名管道等)并在两个代码元素之间进行通信,就好像它们是独立的程序一样。
关于c# - C api 到 C# GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9271863/