如何快速将vc++的类转换为c#/cli
所有需要的工具:
1. TextTemplate
2. P/Invoke Interop Assistant
3. DotNetResolver
vc++的native类一般是无法直接暴露在.net环境下用的(这里暴露的意思是其他.net可以调用)
所以我们其实总是要做一个stub,或者说adapter
对于一般的结构,我们可以通过工具,复制黏贴,转化为.net的类
这里推荐工具:
PInvoke Interop Assistant
我是从stackoverflow上了解的:这里
要注意的是,他们推荐的这个工具 P/Invoke Interop Assistant 有一些限制,我发现他可能无法识别一些注释,特别是注释中有中文,所以必须在贴入VC++代码后,删除所有注释(建议使用正则表达式), 另外由于控件本身的限制,没法输入大量的代码,这里由于源码公开,可以进入后台查看。当然,源代码是VB.net,看不懂…….于是直接使用了工具3:DotNetResolver 反汇编看代码。
P/Invoke Interop Assistant的exe是:winsiggen.exe
.net名称是: sigimplib
其中界面的分支为:
PInvoke.Controls.TranslateSnippetControl
发现其中函数GenerateCode
中有如下语句:
PInvoke.Transform.BasicConverter::ConvertNativeCodeToPInvokeCode(string)
ok, 果断引用此exe,调用此函数就可以解决之前控件造成的字符串字数限制了
最后,也是比较麻烦的就是用tt写stub了,好在结构都已经通过前面的工具转化为.net的了!
最新文章
- C/C++: C++变量和基本类型
- jquery jQuery-File-Upload 例子
- GZFramwork数据库层《二》单据表增删改查(自动生成单据号码)
- C#联调C++项目
- CF 15/09/23
- [百度空间] [转]内存屏障 - MemoryBarrier
- 《大道至简-Team》
- makefile实例(2)-多个文件实例
- hdu 3938 Portal(并查集+离线+kruskal)2011 Multi-University Training Contest 10
- [AngualrJS] ng-strict-di
- js动态向页面中添加表格
- HDU 4292Food(网络流的最大流量)
- python 自定义回调函数
- [BZOJ 4361]isn
- Elasticsearch基础知识分享
- TLB的作用及工作过程
- js-工具函数
- C# 位运算详解
- 【Jmeter自学】badboy使用(三)
- Ant Man CodeForces - 704B (图论,贪心)