Xcode重复符号_main

Pri*_*Raj 10 iphone xcode xcodebuild titanium

每当我尝试编译Appcelerator Titanium生成的任何iPhone应用程序时,我在Snow Leopard 10.6.2上的Xcode 3.2.1中都会出现以下错误.但是,仅当我在架构菜单上选择iPhone模拟器时才会出现构建错误,如果我选择iPhone设备,我可以在我的设备上运行该应用程序.

此外,iPhone模拟器成功启动并直接从使用Xcode构建的Titanium环境执行程序.

为什么会这样?

ld: duplicate symbol _main in Resources/libTitanium.a(main.o) and /Users/prithviraj/Documents/project/Final/build/iphone/build/Final.build/Debug-iphonesimulator/Final.build/Objects-normal/i386/main.o collect2: ld returned 1 exit status Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1

war*_*enm 19

我不能告诉你为什么会这样,但我可以建议一个解决方法.当我注释掉为我的Titanium项目生成的main.m文件的全部内容时,我能够成功编译并在模拟器上运行.如果这对您有用,请告诉我.

  • 作为澄清,您看到错误的原因是libTitanium(主要的Titanium库文件)包含一个`main`入口点,因此这对于main.m中的`main`函数来说是多余的.我不确定为什么这个问题不会出现在其他地方,但它必须与Titanium调用编译器的方式一样,挂钩到它们的入口点而不是main.m中的入口点. (3认同)
  • 就我而言,我正在使用的库拥有它自己的main.m. 注释掉它并且有效 (2认同)

小智 11

检查项目中是否有多个main函数声明.


Wil*_*sch 8

我只花了几个小时与这个战斗.这是因为我使用的是-all_load链接器标志.如果您使用该标志来解决类别错误,还有一些其他解决方案 - 请参阅此处.


gst*_*oup 6

我遇到了类似的问题.我的构建中意外地包含了一个单元测试类.如果您在项目中搜索"main",您可能会发现重复的功能.