AK_*_*AK_ 15 c# c++ dll pinvoke interop
我有一个用C++实现的非常大的系统,我需要与之交互.该系统有一个非常大的API,许多C++ DLL.这些DLL导出C++类,而不是一个漂亮的C风格API.我需要从一个新的C#项目中使用它们.
据我所知,.NET有三种与本机软件交互的方式:
所以我理解它的方式,我有三种方法:
我的问题:
首先,我想知道为什么.NET不允许我"按原样"使用C++类?我假设这是一个内存管理问题.如果是的话,我更愿意编写终结器,并实现IDisposable.据我所知,C++类只是非常奇特的结构,并且由于P/Invoke支持结构,以及将结构作为第一个参数的函数,为什么不支持类呢?
其次,假设我真的很懒,而且它很无聊,乏味,工作,使用这些DLL的最佳方法是什么?直接从C#调用它们的可能性是最好的.如果没有,那么我会喜欢自动工具来制作包装纸.此外,DLL可能会稍微改变,但仍然,id而不是强制手动重写包装器.
对于一个非常好的答案,特别是在第一部分,或一个很好的自动工具,我会奖励赏金......
谢谢