c++ - 带有 lua lib 的 xcode c++ 项目出现链接错误

标签 c++ xcode lua

首先,我创建一个 C++ 控制台项目。 然后,我从lua.org下载lua5.2.0,然后使用lib[make macosx test]并得到liblua.a。 最后,我将lua src导入到项目中,并将liblua.a拖到项目中,编写一些演示代码并编译,但出现链接错误,我确认没有语法错误。

Ld /Users/luocaixin/Library/Developer/Xcode/DerivedData/LuaAdapter-dwqvzxkkhfmcsneiftgqstjfemts/Build/Products/Debug/LuaAdapter normal x86_64
    cd /Users/luocaixin/Desktop/xcodeWS1/LuaAdapter
    export MACOSX_DEPLOYMENT_TARGET=10.10
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -L/Users/luocaixin/Library/Developer/Xcode/DerivedData/LuaAdapter-dwqvzxkkhfmcsneiftgqstjfemts/Build/Products/Debug -L/Users/luocaixin/Desktop/xcodeWS1/LuaAdapter/Lua.5.2.0/src -F/Users/luocaixin/Library/Developer/Xcode/DerivedData/LuaAdapter-dwqvzxkkhfmcsneiftgqstjfemts/Build/Products/Debug -filelist /Users/luocaixin/Library/Developer/Xcode/DerivedData/LuaAdapter-dwqvzxkkhfmcsneiftgqstjfemts/Build/Intermediates/LuaAdapter.build/Debug/LuaAdapter.build/Objects-normal/x86_64/LuaAdapter.LinkFileList -mmacosx-version-min=10.10 -stdlib=libc++ -llua -Xlinker -dependency_info -Xlinker /Users/luocaixin/Library/Developer/Xcode/DerivedData/LuaAdapter-dwqvzxkkhfmcsneiftgqstjfemts/Build/Intermediates/LuaAdapter.build/Debug/LuaAdapter.build/Objects-normal/x86_64/LuaAdapter_dependency_info.dat -o /Users/luocaixin/Library/Developer/Xcode/DerivedData/LuaAdapter-dwqvzxkkhfmcsneiftgqstjfemts/Build/Products/Debug/LuaAdapter

duplicate symbol _main in:
    /Users/luocaixin/Library/Developer/Xcode/DerivedData/LuaAdapter-dwqvzxkkhfmcsneiftgqstjfemts/Build/Intermediates/LuaAdapter.build/Debug/LuaAdapter.build/Objects-normal/x86_64/lua.o
    /Users/luocaixin/Library/Developer/Xcode/DerivedData/LuaAdapter-dwqvzxkkhfmcsneiftgqstjfemts/Build/Intermediates/LuaAdapter.build/Debug/LuaAdapter.build/Objects-normal/x86_64/luac.o
duplicate symbol _main in:
    /Users/luocaixin/Library/Developer/Xcode/DerivedData/LuaAdapter-dwqvzxkkhfmcsneiftgqstjfemts/Build/Intermediates/LuaAdapter.build/Debug/LuaAdapter.build/Objects-normal/x86_64/lua.o
    /Users/luocaixin/Library/Developer/Xcode/DerivedData/LuaAdapter-dwqvzxkkhfmcsneiftgqstjfemts/Build/Intermediates/LuaAdapter.build/Debug/LuaAdapter.build/Objects-normal/x86_64/main.o
ld: 2 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我想知道是什么原因导致这个错误以及如何在xcode c++中导入lua 正确投影。

最佳答案

你读到错误了吗?它告诉您出了什么问题:您有多个 main 函数。您已经包含了两个包含 main 函数(lua、luac)的对象文件,并且您的测试应用程序中可能也有一个。您需要将这些文件保留在项目之外。它们分别是引用命令行解释器和编译器。如果您将 Lua 作为库嵌入,则不需要包含它们。

关于c++ - 带有 lua lib 的 xcode c++ 项目出现链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31955483/

相关文章:

c++ - 如何一次从文件中读取多个字节?

c++ - 对 vector 的相同元素进行升序排序

ios - ld : entry point (_main) undefined. 架构 x86_64:Xcode 9

ios - 从 Sandbox 中的 DAE 模型加载 SCNScene 对象

sorting - 从表中找到最小值的最佳方法?

c++ - 路亚 "attempt to index a nil value"

c++ - Boost C++ - 动态迭代多数组

c++ - 特殊字符 C/C++

ios - Restkit 今天突然停止编译了

Lua:替换一个子串