我可以将具有C-Style方法的C ++接口导出到C#dll

|| 我正在尝试避免使用COM。我正在C ++ exe上设计混合的C#和C ++控件。 我想出的一种方法是从C#调用C ++ exe,然后将Windows消息发送到C#窗口。但是,我在控件基类上调用的方法数量太长,无法证明Windows消息的合理性。 因此,如果可以将整个C#接口导出到C ++ exe,那将更加容易。 我想避免使用COM,因为我可能必须支持Windows 2000,并且不依赖清单文件而进行COM操作会导致当前在注册表中设置不多的软件包的部署麻烦。     
已邀请:
        我在VS 2010中使用C ++ / CLI来做到这一点。您可以公开一个可以以通常方式使用的DLL C接口,该实现只会将数据从该接口封送至您的C#程序集。 相关问题,我想从C ++,反向P /调用,混合模式DLL和C ++ / CLI调用C#     
        您可以为每个C ++控件编写一个C包装程序,并从C#中编写PInvoke。 例如,此C ++类:
class Example
{
  public:
  int MyMethod(int param);
}
并在c ++ exe的extern \“ C \”块中:
void * CreateExample() { return new Example(); }
int Example_MyMethod(void * handle, int param) { reinterpret_cast<Example*>(handle)->MyMethod(param)); }
并在C#中:
public class Example
{
 private IntPtr handle;

 public Example()
 {
   handle = _CreateExample();
 }

 public int MyMethod(int param)
 {
    return _MyMethod(param);
 }

 [DllImport(\"yourdll.exe\")]
 private static extern IntPtr _CreateExample();

 [DllImport(\"yourdll.exe\")]
 private static extern int _MyMethod(IntPtr handle, int param);
}
    

要回复问题请先登录注册