使用luajit和lua-iup库进行编译时出错[visual c++ 2012]。

我使用luajit和lua-iup编写了一个应用程序,并链接我的应用程序与静态库。但我遇到了以下错误:

------ 开始构建: 项目: ConsoleApplication1, 配置: Release Win32 ------
     正在创建库 C:\Users\root\Documents\Visual Studio 2012\Projects\ConsoleApplication1\Release\ConsoleApplication1.lib 和对象 C:\Users\root\Documents\Visual Studio 2012\Projects\ConsoleApplication1\Release\ConsoleApplication1.exp
iup.lib(iupwindows_main.obj) : error LNK2001: 无法解析的外部符号 _main
C:\Users\root\Documents\Visual Studio 2012\Projects\ConsoleApplication1\Release\ConsoleApplication1.exe : fatal error LNK1120: 1 个无法解析的外部命令
========== 构建: 成功 0 个,失败 1 个,最新 0 个,跳过 0  ==========

我是否漏掉了一些库?这是怎么回事呢?

点赞
用户68204
用户68204

据我所知,IUP 的 Lua 绑定部分是用 Lua 写的。一般情况下这不会有问题,但是 Lua 部分被编译成了预编译字节码导入到库中。Lua 字节码与 LuaJIT 字节码是不同的。

正确的做法是改变 IUP 的构建方式,使用 Lua 源代码进行编译而不是预编译字节码。这可能会减慢 IUP 应用程序的启动速度,但是这将使得跨平台编译 IUP 变得更容易,并且可以使用 LuaJIT 替代标准 Lua。

2013-04-18 21:55:36
用户115781
用户115781

以下是 IUP 作者的回答,希望能够帮助到和我遇到相同问题的人:

你似乎正在构建一个控制台应用程序。这意味着你需要一个“main”函数。如果你尝试构建一个没有控制台的 Windows 应用程序,则 IUP 将为你实现 WinMain 函数并调用你的“main”函数。在这两种情况下,你都需要“main”函数。

2013-04-21 09:37:58