一、制作我们的Lua库(lua.lib)
第一步:准备好lua的源文件(目前我用的是最新版本lua-5.2.3,下载地址:http://www.lua.org/download.html);
第二步:把lua-5.2.3源文件随便放一个盘的目录下(好处是路径少,目前我是喜欢放到D盘,比如:D:\lua-5.2.3);
第三步:运行vs2013,新建一个win32控制台应用程序项目,项目名称:Lualib。如图:
第四步:按确定之后,再点击下一步后,进入“应用程序设置”界面,在应用程序类型:选择“静态库”,附加选项:去掉预编译头。然后点击完成。如图:
第五步:在Lualib工程的头文件和源文件分别附加上lua-5.2.3的(.h文件)和(.c文件)
①:鼠标右击Lualib工程目录下的头文件----->添加------>现有项 把:D:\lua-5.2.3\src中所有.h头文件添加进来
②:鼠标右击Lualib工程目录下的源文件----->添加------>现有项 把:D:\lua-5.2.3\src中所有.c源文件添加进来
第六步:接下来是比较重要的,配置项目属性。 打开菜单栏上的“项目”------->“属性”-------->“配置属性”
①:在C/C++选项下,选中常规,第一项“附加包含目录”中填上D:\lua-5.2.3\src。如图:
②:在C/C++选项下,选中高级,第二项“编译为”选择:编译为C代码(/TC)。点击确定。如图:
第七步:上面完成之后。直接运行项目,生成我们需要的lua.lib文件。不过我这里直接运行会出现以下的错误,如图:
不过不用担心,已经有办法修复。还是在配置属性上面设置。
打开菜单栏上的“项目”------->“属性”-------->“配置属性”。在C/C++选项下,选中预处理器 ,在第一选项的“预处理器定义”中加入_CRT_SECURE_NO_WARNINGS 即可。
第八步:再次运行项目,你会发现弹出“无法启动程序”的警告。这个不用管,我们看“输出框”最后一句话就好。因为我们是弄静态库的,当然是不能启动程序啦。
完成这一步,我们的lua库终于做好了。不信,你在D:\vsProject\Lualib\Debug下是不是有个Lualib.lib文件啊。这就是我们要的库。接下来拿个简单例子测试一下。
二、测试C++调用Lua
第一步:跟上面一样,新建一个win32控制台应用程序项目,项目名称为:mytest。然后点击完成即可。
第二步:鼠标右击解决方案,添加现有项目(记住是现有项目,而不是现有项,不然后面会出差错的哦),找到上面创建的Lualib文件夹下的Lualib.vcxproj文件,点击确定添加。
如图:
第三步:鼠标右击mytest项目,选择“属性”,然后选中“通用属性”下的“引用”添加Lualib的引用。如图:
第四步:在“配置属性” 的在“C/C++项”中选着“常规”,在第一项“附加包含目录”中填上D:\lua-5.2.3\src。如图
第五步:上面完成之后,不多说,直接上代码。在mytest.cpp文件上添加如下代码:
跟mytest.cpp同目录下的lua文件,名为test.lua,其代码 如下:
第六步:不多说,直接运行看结果。
三、在网上下载别人的代码运行的例子
第一步:直接运行例子,看看能不能正常运行或者有什么出错的。刚下的文件,一运行立马报错。见图:
看看什么意思呢?原来是没有包含lua几个的头文件,因为我下的例子刚好没有。没事,没有头文件,我们就加头文件,跟上面的测试例子有的相似。
在“配置属性” 的在“C/C++项”中选着“常规”,在第一项“附加包含目录”中填上D:\lua-5.2.3\src。如图
看到这个,大家应该知道是没有找到库的原因吧。那好,我们就加上我们上面制作的库吧。还记得怎么附加进去吗?
①:鼠标右击解决方案,添加现有项目,找到上面创建的Lualib文件夹下的Lualib.vcxproj文件,点击确定添加。
②:鼠标右击项目,选择“属性”,然后选中“通用属性”下的“引用”添加Lualib的引用。如图:
第三步:好,我们再运行看看。什么,还是同样的问题?我猜估计是路径问题了。呵呵,找找看。这路径刚好对应我们的链接器。好了,上图:
原来问题出在这里,这个应该是原来的例子就设置好链接库的。不过我现在用的是新的版本lua-5.2.3。就用我们之前的做的库吧。
说到这里,有两种办法解决这个问题。
第一种解决方法:直接把“附加依赖项”的内容全删除了。估计有人会问到为什么? 那我诚心诚意的回答你,我们不是附加了一个库了吗?把它删了,不就可以链接到我们的库了吗?
第二种解决方法:直接把“附加依赖项”的内容全删除了,不过把我们的库及其路径放上去。如:D:\vsProject\Lualib\Debug\Lualib.lib即可。