在gitee上下载lua-studio.zip的源代码,这个源代码不能自己被编译会报很多错误,大部分都会放弃,经过我不断的摸索终于编译成功了,记录如下:
1下载luastudio源代码,地址:https://gitee.com/emmm_admin/lua-studio?_from=gitee_search,或者直接搜索lua studio,gitee上的两个下载源都是一样的;
2找到luastudio.sln的工程文件直接用vs2019打开,可以直接编译出来
Lfs.ll ,lua5.1.dll和ResDll.dll共3个文件scintilla的项目已经损坏,不能编译,需要在网上下载一个scintilla的代码来替换,所以luastudio也不能编译,起码确实scintill.dll库:
3,直接移除已经损坏的scintilla工程,并,在gitee上下载一个scintilla,可能会有版本问题
删除原来的scintilla文件夹,然后用下载的替代,并把win32下面的SciLexer.vcxproj添加到解决方案中,并在属性中把平台修改成vs2019,单独生成,如果成功就OK.
4,这样就差最后的LuaStudio没有编译成功了,直接也点击luastudio点击生成,第一次编译有180个错误,26个警告,这里可能大部分都放弃了,我们这里一个个错误修改;
错误1,无法打开boost/xxxxxxx,原因是没有加载boost的目录,自己添加boost;
错误数变成了259,错误增加了。。。。。
2再看第一个错误是string_view不是std的成员,string_view是c++17才有的,我们当前的c++选择的是14,换成最新的c++20试试把,其实还可以把string_view换成string我在vs2015试过,这样可以;
3提示/GM和c++20不兼容,百度没有找到解决,那就换成c++17把,这样又变成了一堆错误,头大呀;
//下面修改几个明显的
4 Cls找不到标识符,这个是.h文件中没有Cls(); 找到 bool Cls();的定义,然后添加到头文件中
5 SCI_GETTWOPHASEDRAW没有定义,通过搜索发现是#ifdef INCLUDE_DEPRECATED_FEATURES条件编译没有打开,导致没有,我们直接在前面#define INCLUDE_DEPRECATED_FEATURES,或者添加到属性的预处理器定义中;
6 SCI_SETUSEPALETTE 没有定义,这个确实找不到,就先屏蔽掉吧,改成return 0;
7这样就还有89个错误了,每次都先修改第一个错误,提示没有stdafx.h文件;通过搜索发现在src目录下有StdAfx.h,可能是没有添加进来include吧,先添加进来include中,或者直接修改成
#include "../../src/StdAfx.h"好像还行没有修改好,算了关闭头文件staafx.h头文件;然后把找到stdafx.h的换成./stdafx.h,因为src里面还是有stdafx.h的,这样就还剩88个错误了;
8 “auto_ptr”不是std成员,在c++17里面好像没有auto_ptr了,修改试了std:shared_ptr好像可以,把全部的std::auto_ptr替换成了std::shared_ptr就可以了,88个错误竟然统统消失了,生成了lua_studio.exe文件。
9直接运行exe文件,会运行一下然后就退出了,修改了全部的错误,竟然不能运行,经过反复的摸索和仿真发现是加载在app.cpp文件中,加载IDR_MAINFRAM时候失败了,打开资源视图发现有一个ICON和Accelerator以及一个Menu都叫这个名字,或许是这个原因导致ID错误了,通过新建多文档的项目发现确实上面三个都叫IDR_MAINFRAME的id,这里不是问题,后面通过尝试发现插入一个新的dialog或者修改了视图文件后,就能显示图形界面了,如下:
具体的原因,可能是系统自带的rc资源有问题,或者兼容性的问题,重新修改资源视图后,会自动产生新的resouce.h来覆盖以前的资源,这样就能现成出界面了。(界面上传失败了)
luastudio可以单步仿真lua ,并能显示打印信息,能查看变量值,功能还是很强大,就是现在最新版本是收费的,所以导致大家用的比较少,这个开源的版本最开始是在github上的,后面又被上传到了gitee上,这个开源的版本比较老,已经是13年前的代码了,主要是编译问题比较多,用来做学习或者二次开发的人比较少,我把自己的开发过程记录下来,共大家学习,并创建了一个开源的学习交流群,欢迎大家加入QQ群:628070855,这里欢迎大家讨论各种软件开发的技术问题。。。。。。
我把自己修改好的代码放在了csdn上,欢迎大家修改并用来做二次开发。。。。。