Como organizar o arquivo de origem C compilado anteriormente pelo GCC Make e construí-lo em um pacote Xcode? Eu tenho um símbolo duplicado _main Error

Como criar um pacote a partir do código font

Isso pode parecer um problema simples, mas está me prejudicando há uma semana ...

Aqui está o meu problema:

Tenho vários arquivos .c e .h organizados em uma pasta e suas subpastas. O código fonte foi escrito e compilado com o gcc make e testado por muitas outras ferramentas de make. O código fonte possui alguns utilitários e ferramentas de linha de comando e possui mais código que serve como biblioteca para esses utilitários e ferramentas. São os arquivos que servem como bibliotecas que eu quero reutilizar. (Por biblioteca, não me refiro a biblioteca estática ou algo assim, apenas quero dizer que alguns arquivos .c e .h em determinadas subpastas fornecem funções que podem ser chamadas por outros arquivos .c. Quero poder chamar essas funções, também

No entanto, meu problema é mais complexo que isso: preciso compilar esses. C e. H em um pacote para reutilizá-lo. Não estou escrevendo meu aplicativo em C; Estou desenvolvendo no Unity e o Unity só pode receber arquivos .bundle no Mac OS.

Aqui está o meu objetivo:

Organize a pasta do código-fonte de maneira adequada para que eu possa construí-los em um pacote no Xcode 4.

Aqui é onde eu fiquei preso:

Ao criar o projeto, recebi o seguinte erro:

Duplicate symbol _main in /Users/zeningqu/Library/Developer/Xcode/DerivedData/ccn-cfygrtkrshubpofnfxalwimtyniq/Build/Intermediates/ccn.build/Debug/ccn.build/Objects-normal/i386/ccndsmoketest /Library/Developer/Xcode/DerivedData/ccn-cfygrtkrshubpofnfxalwimtyniq/Build/Intermediates/ccn.build/Debug/ccn.build/Objects-normal/i386/ccnd_main.o para arquitetura i386

Eu posso me relacionar com esse erro porque encontro muitas entradas principais no código-fonte. A maioria deles são utilitários de test

Aqui está o que eu tentei:

Tentei remover todos os arquivos .c do utilitário, mas sem sorte. O erro ainda está lá. Excluo e excluo até que alguns arquivos não consigam encontrar a definição da função que estão chamando. Então eu tive que parar por a

Embora eu não tenha conseguido criar um pacote, consegui criar uma biblioteca estática C / C ++ (com uma extensão .a). Depois de obter o arquivo .a, tentei colocá-lo em outro projeto do Xcode e compilá-lo em um pacote. Eu poderia criar um pacote dessa maneira, mas tive problemas para acessar o conteúdo do pacote. Como chamo funções definidas em uma biblioteca estática. Se essa biblioteca está oculta em um pacote configuráve Eu li sobre a documentação da Apple que diz:

ota: Alguns destinos Xcod, e (como ferramentas de shell e bibliotecas estáticas) não resultam na criação de um pacote ou pacote. Isso é normal e não há necessidade de criar pacotes configuráveis especificamente para esses tipos de destino. Os binários resultantes gerados para esses destinos devem ser usados como estã

(citado em:https: //developer.apple.com/library/mac/#documentation/CoreFoundation/Conceptual/CFBundles/AboutBundles/AboutBundles.html#//apple_ref/doc/uid/10000123i-CH100-SW)

Aqui está o que eu pensei: Pensei em substituir todos os main por algo como main_sth. Mas o código fonte não foi escrito por mim, então não quis modificá-lo. (Apenas não parece uma maneira adequada de fazer as coisas comigo ...) Aprendi que o Xcode possui o compilador gcc embutido. Então, acho que se o gcc pode fazer isso, o Xcode também pode? É apenas um palpite - não estou familiarizado com o Xcode e o gcAqui está um resumo das minhas perguntas: Existe uma maneira de organizar adequadamente uma pilha de códigos compilados anteriormente e criados pelo gcc make para que possam ser incorporados em um pacote Xcod É significativo colocar uma biblioteca .a em um projeto do Xcode e construí-la em um pacote? Se for significativo, como chamo as funções definidas em .a depois de incorporadas a um pacot É adequado substituir apenas todas as entradas main () por outr

questionAnswers(4)

yourAnswerToTheQuestion