首先从git上获取最新的代码,无法FQ的用户可以使用我百度网盘下好的压缩包Decoda压缩包下载百度网盘地址提取密码: 5hbj
生成工程项目需要用到premake,压缩包里已经有了,使用方法可以自己help
现在开始使用premake生成VS2013的工程项
premake4.exe --file=F:\Document\decoda-master\premake4.lua --os=windows --platform=x32 vs2013
生成build工程文件夹,
然后就可以使用VS2013打开Decoda.sln 进行工程加载了
分别编译Fronted和LuaInject,然后在Bin目录下就能得到Decoda.exe的可执行程序了
-----------------------------华丽的分隔线------------------------------------------
由于我们项目用到的lua脚本都用的是gb2312的格式进行保存的,这样在使用Decoda进行调试的时候无法对保存的中文变量值进行查看,只能对源代码进行稍微的修改
通过对源代码的解读可以知道从内存中解析出来的内容是可读的,但是编码是GB2312,在使用wx进行解析时用的是utf8编码就导致出问题了,自己根据公司项目的情况进行编码的转换,具体改动的地方有2个,一个是WatchCtrl,还有一个是tooltip,在显示的时候需要把UTF8的编码转位GBK进行显示,否则还是乱码
由于改动是在公司内部进行修改的,这里就不贴代码了,提示修改的具体位置:WatchCtrl::UpdateItem , MainFrame::OnCodeEditDwellStart
-----------------------------华丽的分隔线------------------------------------------
程序运行截图
然后使用Decoda进行挂接调试
-----------------------------华丽的分隔线------------------------------------------
C++代码,和lua代码,
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char** argv)
{
int tmp;
lua_State* L = lua_open();
luaL_openlibs(L);
printf("input anything to run lua file.\n");
cin >> tmp;
luaL_dofile(L, "addstr.lua");
lua_getglobal(L, "add");
lua_pushstring(L, "中");
lua_pushstring(L, "文");
lua_call(L, 2, 1);
string ret_str = lua_tostring(L, -1);
lua_pop(L, 1);
printf("The result str is :%s", ret_str.c_str());
cin >> tmp;
return 0;
}
function add(str1, str2)
str1 = str1 or ""
str2 = str2 or ""
local ret_str = str1..str2
return ret_str
end
工程项目属性设置注意事项截图,需要添加lua的依赖
-----------------------------华丽的分隔线------------------------------------------
文件路径截图
应该就这么多注意事项了
编码问题可以参考 : 推荐编码问题解读