您的位置:首页 > 编程语言 > C语言/C++

如何快速将vc++的类转换为c#/cli

2015-08-14 01:28 316 查看
所有需要的工具:

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的了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: