Uma pergunta para iniciantes no Xcode:
É minha primeira experiência com o Xcode 4.6.3.
Estou tentando escrever um programa de console muito simples, que procura dispositivos BT emparelhados e os imprime em um NSLog.
Ele é compilado com o seguinte erro:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_IOBluetoothDevice", referenced from:
objc-class-ref in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Eu procurei como um louco. O problema comum deve ser uma referência a um arquivo, do qual apenas os arquivos de cabeçalho são importados e nenhuma implementação (arquivo * .m) é encontrada pelo vinculador. A biblioteca IOBluetooth é, no entanto, um Framework padrão como o Foundation Framework.
O que estou perdendo na minha declaração acima?
Também tentei construí-lo para uma máquina de 32 bits (a construção falha novamente). É claramente um erro do vinculador, no entanto, não tenho ideia do que ele se refere, exceto que há um problema em encontrar a implementação para IOBluetoothDevice, na arquitetura x86 e x64, enquanto os arquivos de cabeçalho são de um Framework incluído padrão, chamado IOBluetooth?
Para sua informação, meu código principal "main.m" é:
#import <Foundation/Foundation.h>
#import <IOBluetooth/objc/IOBluetoothDevice.h> // Note the import for bluetooth
#import <IOBluetooth/objc/IOBluetoothDeviceInquiry.h> // Note the import for bluetooth
int main(int argc, const char * argv[])
{
@autoreleasepool {
IOBluetoothDevice *currentDevice;
NSArray *devices = [ IOBluetoothDevice pairedDevices];
for (id currentDevice in devices){
NSLog(@"%i : %@",[ currentDevice classOfDevice ], [ currentDevice name ]);
}
}
return 0;
}
Obrigado por qualquer ajuda ou indicações para a direção certa.
Parece que está faltando incluir o IOBluetooth.framework em seu projeto. Você pode adicioná-lo por:
-Clique em seu projeto no canto superior esquerdo do painel esquerdo (o ícone azul).
-No painel do meio, clique na guia Build Phases.
- Em "Link Binary With Libraries", clique no botão de adição.
-Encontre o IOBluetooth.framework na lista e clique em Adicionar.
Isso garantirá que as definições IOBluetooth.framework sejam encontradas pelo vinculador. Você pode ver que a estrutura é um membro de seu destino clicando na estrutura no painel esquerdo e vendo a associação de destino da estrutura no painel direito (observe que movi a estrutura no grupo Frameworks para fins de organização):
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras