编译 VisualD

       VisualD是一个vs插件,安装后就可以使用D语言来开发应用程序了。这是一个开源项目,下载下来自己编译一个试试,随便学习一下大师们是怎么样来做VS插件的。VisualD可以从https://github.com/dlang/visuald下载得到。解压后有vs工程:

image      VisualD编译时固定需要DMD2.066版本编译器,不要使用其它版本(目前为止),正好与DGUI一样,真不错,下面我们来编译一下吧。visuald网站上看,有介绍image

编译VisualD需要

       一、先安装Visual Studio SDK,这个不是VS,这个是用来开发VS扩展程序的库, 我使用的是VS2013,所以我下载了个Visual Studio SDK,这是一个微软提供给开发人员的库,用于开发VS插件,不同的VS有不同的库,可以在msdn上搜索Visual Studio SDK 2013就可以得到。VS2013 SDK下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=40758

           VS扩展程序开发在微软网站上有详细介绍https://msdn.microsoft.com/en-us/library/bb166441.aspx  VS扩展程序的例子程序可以从这里找到大量例子:https://github.com/Microsoft/VSSDK-Extensibility-Samples  VS2013扩展程序例子可以从https://code.msdn.microsoft.com/windowsdesktop/VIsual-Studio-2013-SDK-728822a7 下载,

          下载好VS2013 SDK后,进行安装

image       如果你使用的是vs2008的就安装vs2008 sdk。安装完成后进入第二步。

       二、打开visualD工程visuald_vs10.sln文件。

       三、编译build项目,如图

image

编译后出错,如下图

image 错误出现在编译build.sdk文件中,提示错误ERROR: Cannot determine the location of the VS Common Tools folder.

意思是找不到VS Common Tools(VS通用工具)目录,没找到iviewer.dll文件,这是个什么文件,我在C语中搜索,我的经常使用的软件都安装在C盘,所以在C盘搜索,只要有基本上都能找得到。

image

搜索结果真的找到了。原来是Microsoft SDKs中的一个工具,那么这个错误应该是路径不对,知道原因了,再看看编译日志

image

原来是在调用dte_idl.bat 时出错了,再一看发现原来现在在编译debug版本,先改为Release再重新编译一下,还是同样错误。来看看dte_idl.bat这个批处理吧,传了两个参数进去,一个是..inRelease lb2idl.exe 和dte_idl.success两个文件。

看到了这句

image

iviewer.dll not found是在这里输出的,也就是说WindowsSdkDir这个变量不对,所以才会找不到这个文件,使用echo来看一下这个变量是什么值。在dte_idl.bat中加入以下语句后重新编译build工程

image显示

image 

WindowsSdkDir为空,原来如此。在系统里加一个环境变量,再来试一下:

image 加入了环境变量后,编译果然继续了,但又出了新的错误:

 image 从上面知道刚才的iviewers.dll找不到的事情已经解决,但在后面的编译里又出现问题,image

还是WindowsSdkDir没设置,怎么回事,不是我已经设置了吗? 这次是在调用sdk.bat时到不到WindowsSdkDir变量了,估计是系统变量还没有生效,把VS重起一下再重新编译。在编译到下面这步时,需要等待很长时间,因为软件在做转换工作,把c语言的.h文件自动转换成d语言可以使用的格式.d文件,运行时提示vsi需要重新加载,确定就行。

image

编译到sdk_libs里又出错了

image

image 打开sdk_libs.bat文件一看,天呀

image 这里什么,原来还用到了coffimplib.exe这个工具,这个工具是dmc,也就是dmd1.0里的一个工具,这个工具可以从下面网站上下载:http://ftp.digitalmars.com/ 下载好后,修改这个文件指到你自己的文件,我的设置如下图

image      设置好后再重新编译,终于成功了

image

      三、该编译VisualD了,直接编译VisualD工程,出错

image

image 是因为工具转换时可能是出错了,注释掉,再编译。继续出错

image 这是在编译Resourcespkgcmd.vsct时出错,无效参数文件,这真是一个需要耐心的事情。

image 看编译日志,应该是在这行这一句时出错了

image

这是在使用vsct.exe处理pkgcmd.vsct资源文件时出错了,能走到这一句,说明vsct.exe已经找到了,那么这一句为什么出错呢?

来用cmd测试一下这个处理过程吧

image

编译并没有出错,原因可能是因为路径中有空格,需要打上又引号才行,而编译的处理程序没有加,所以出错了。这个问题如何解决,应该需要搞清楚visuald是在哪里调用VSCT.exe的,需要修改才行。经过分析发现,visuald是使用.visualdproj文件来配置项目,打开visuald.visualdproj文件找到:no_VSCT部分:

image 在文件里到了需要修改的部修改为:

image

修改好后继续编译,到编译visuald.res里又出错,找不到rc命令

image

image 我在c盘换到我的rc.exe在C:Program Files (x86)Microsoft SDKsWindowsv7.1ABin目录,把这个目录设置到系统Path中去:

image 设置好后继续编译,在编译到logutil.d里出错,将出错的断言去掉

image

终于编译完成了。~~~~~~~~~~~~~~~~~~~~~~~

image

哈哈哈

    总结一下:

    VisualD真是一个很有意义的工程

    1. 使用了coffimplib.exe工具把SDK中微的lib转换为可以调用的lib

    2. 在c2d工程里实现了c.h转化为d语言使用的格式

    3. 在cpp2d工程里实现了cpp.h转化为d语言使用的格式

    4. 在parser工程里实现了D语言的词法解析

    5. 在vsi2d工程里实现了vsi到d语言的转换

    6. 成功实现了d语言调用VS SDK的功能

真是大牛们呀~~~~~~~~~~~~~~~~~~`

原文地址:https://www.cnblogs.com/wanhongnan/p/5716564.html