C++ Visual 2010的LUA编译错误;“外部符号”;结构lua“u State*”cdecl luaL“u newstate(void)”;
当我编译下面的代码时,我在VisualStudio2010中使用Luaver5.2.3C++ Visual 2010的LUA编译错误;“外部符号”;结构lua“u State*”cdecl luaL“u newstate(void)”;,c++,visual-studio-2010,lua,C++,Visual Studio 2010,Lua,当我编译下面的代码时,我在VisualStudio2010中使用Luaver5.2.3 #include "stdafx.h" #include "lua.h" #include "lauxlib.h" #include "lualib.h" #include <stdlib.h> #include <stdio.h> void main() { lua_State *luaState = luaL_new
#include "stdafx.h"
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
#include <stdlib.h>
#include <stdio.h>
void main()
{
lua_State *luaState = luaL_newstate();
}
你能给我一些建议吗。
谢谢这是C++“名字修饰”的结果。看看这个术语中有多少奇怪的字符:
?luaL_newstate@@YAPAUlua_State@@XZ
您可以选择:
将此文件的文件扩展名改为.c而不是.cp,以便它通过C编译器而不是C++编译器运行(警告:依赖编译器)
或 在include周围添加外部“C”,如下所示:extern "C"
{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
或
在最后一种情况下,该标题包含在5.2版本中。它实现了我在选项2中为您编写的功能 您需要链接到Lua库。我已经链接了Lua库。但是仍然错误请查看此链接:我从源代码(Lua.org)为自己编译了Lua库。我是作为静态库来做的。我成功了。但是链接错误。我认为它来自VisualStudio2010。在Visual2008上,这不会发生。已更新您的问题,以显示链接器配置(可以粘贴vcxproj的XML)和生成时的输出。
extern "C"
{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
#include "lua.hpp"