zoukankan      html  css  js  c++  java
  • 编译 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的功能

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

  • 相关阅读:
    Socket
    Cookie & Session
    一些快捷键&工具的用法收集
    过桥问题及一些想法
    微信初步开发(测试用)
    代码的编写习惯
    Python爬虫简单笔记
    如何降低AzurePaasSQL的表占用空间
    Sonar代码检测工具安装与使用及问题记录
    AzureDevops发布Artifact
  • 原文地址:https://www.cnblogs.com/wanhongnan/p/5716564.html
Copyright © 2011-2022 走看看