如何快速将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的了!
如何快速将vc++的类转换为c#/cli的更多相关文章
- 一个由印度人编写的VC串口类
http://www.cnblogs.com/lwngreat/p/4098374.html 软件介绍 一个由印度人编写的VC串口类(也是一种VC串口控件),他还配合这个类写了VC 串口通信方面的一些 ...
- ARCGIS获取图层下的要素信息及要素类转换为要素
/// <summary> /// 得到需要的字段名和字段值 /// </summary> /// <param name="layer">&l ...
- 快速枚举的迭代器类NSEnumerator
另外,OC中有一个专门的快速枚举的迭代器类NSEnumerator,这个类的使用方法如下: //得到一个对应的enumerator对象 NSEnumerator * enumerator = [se ...
- Eclipse快速生成一个JavaBean类的方法
原文: https://jingyan.baidu.com/article/948f5924156866d80ff5f921.html Eclipse快速生成一个JavaBean类的方法 听语音 | ...
- vc常用类总结(转载)
常用类 CRect:用来表示矩形的类,拥有四个成员变量:top left bottom right.分别表是左上角和右下角的坐标.可以通过以下的方法构造: CRect( int l, int t, i ...
- VC++ CString类完美总结(整理)
CString 是编程中一种非常有用的数据类型,它是MFC中的一个类,很大程度上简化了MFC中的许多字符串的操作. CString位于头文件afx.h中. ①.CString 类对象的初始化: CSt ...
- 快速生成json实体类
读取一个json文件,并与实体相对应: static void Main(string[] args) { string json = ""; FileStream fs = ne ...
- 插件GsonFormat快速生成JSon实体类
IntelliJ IDEA 个人觉得是目前最好最强最智能的Java IDE,默认已经集成了几乎所有主流的开发工具和框架. 1.常用工具支持Java日常开发需要接触到很多常用的工具,为了便于使用,很多工 ...
- 快速搭建一个“微视”类短视频 App
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云视频发表于云+社区专栏 关注公众号"腾讯云视频",一键获取 技术干货 | 优惠活动 | 视频方案 " ...
随机推荐
- 【BZOJ1844/2210】Pku1379 Run Away 模拟退火
[BZOJ1844/2210]Pku1379 Run Away 题意:矩形区域中有一堆点,求矩形中一个位置使得它到所有点的距离的最小值最大. 题解:模拟退火的裸题,再调调调调调参就行了~ #inclu ...
- Hadoop集群搭建-Hadoop2.8.0安装(三)
一.准备安装介质 a).hadoop-2.8.0.tar b).jdk-7u71-linux-x64.tar 二.节点部署图 三.安装步骤 环境介绍: 主服务器ip:192.168.80.128(ma ...
- 使用注解来构造IoC容器-转
新手,对于一些觉得有用的东西,直接转过来用了,自己理解的比较肤浅 使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<co ...
- Windows平台,开机自动运行应用
打开注册表编辑器(Win+R后执行regedit) 进入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 新建字符串值, ...
- 在VC++空工程中使用MFC类,采用Unicode字符集后,运行工程程序报错的解决方案
创建一个VC++空工程,将Project Properties->General->Use of MFC改为Use MFC in a Shared DLL 新建一个源文件,内容如下 #in ...
- 虚拟机linux安装mysql
安装mysql时需要的全套安装包 mysql-5.1.73-3.el6_5.i686.rpm mysql-libs-5.1.73-3.el6_5.i686.rpm mysql-server-5.1.7 ...
- [IR课程笔记]向量空间模型(Vector Space Model)
VSM思想 把文档表示成R|v|上的向量,从而可以计算文档与文档之间的相似度(根据欧氏距离或者余弦夹角) 那么,如何将文档将文档表示为向量呢? 首先,需要选取基向量/dimensions,基向量须是线 ...
- Web UI回归测试 -- BackstopJS 入门
BackstopJS是一个测试工具,用于测试ui图和实际项目是否偏差. 话不多说,直接启动一个项目吧测试吧. 1.首先全局安装BackstopJS npm install -g backstopjs ...
- GIN+GORILLA=A GOLANG WEBSOCKET SERVER
鉴于聊天已然成为大部分app的基础功能,而大部分app用户基数有没有辣么大,常用的聊天server架构如xmpp或者消息队列实现之类的用起来还挺麻烦的,有比较难跟网页端做交互,加之H5标准落地,所以w ...
- html标签默认属性值之margin;padding值
一.h1~h6标签:有默认margin(top,bottom且相同)值,没有默认padding值. 在chrome中:16,15,14,16,17,19; 在firefox中:16,15,14,16, ...