【问题标题】:Windows Compact Embedded: Calling C# DLL from C++Windows Compact Embedded:从 C++ 调用 C# DLL
【发布时间】:2021-11-26 21:26:50
【问题描述】:

我正在尝试从非托管 C# 应用程序调用 C# .NET DLL。我曾尝试编写 C++/CLI 包装器,但无法针对 CE 目标进行编译。在对许多表单帖子进行了一些挖掘之后,普遍认为 WinCE 不支持 C++/CLI,但是我还没有找到支持这一点的官方 Windows 文档。我还尝试为我的 DLL 创建一个 COM 包装器,它编译得很好,但是无法在运行时创建包装对象的实例。我已经正确注册了我的 COM 组件,但似乎也不支持它。

有谁知道:

  1. 让 C++/CLI 或 COM 为 WinCE 2013 工作的任何解决方法。
  2. 在 C++ 和 C# 应用程序之间进行进程间通信的首选方法。

【问题讨论】:

  • 如果一切都失败了,您可以使用CLR Hosting API,它允许您从非托管代码加载和执行托管程序集。
  • 紧凑框架中不存在托管

标签: windows interop compact-framework windows-ce windows-embedded-compact


【解决方案1】:

由于不存在托管,因此确实没有解决方法。您需要使用 IPC,而“最佳”实际上取决于您的用例。内存映射文件适用于数据共享、套接字或命令的命名事件。与桌面不同,CE 还支持发送带有命名事件的简单 32 位值(SetEventData IIRC?),这在某些情况下可以超级轻量级​​和方便。

【讨论】:

  • 您知道 WinCE 是否支持命名管道或任何双工管道?
  • 不支持,不。
  • 有没有办法使用 CreateFile 从头开始​​创建管道?前任。 myProperty.txHandle = CreateFile( L"\\\\.\\pipe\\testPipe", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
  • 不支持命名管道,所以这行不通。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-04
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多