У меня проблема со связью со статической библиотекой .a C, которую я скомпилировал как отдельную цель.
Моя библиотека называется libtest.a и имеет только одну функцию: int test (), которая всегда возвращает 1.
Я поместил libtest.a и test.h (его заголовочный файл) в mylibrary_directory
Затем я создаю новый базовый проект iphone view и добавляю mylibrary_directory в путь поиска библиотеки, путь поиска заголовка и пути поиска заголовков пользователей в xcode. Также я добавил флаг -ltest в опции других флагов компоновщика.
Когда я выполняю вызовы test () в myProjectViewController.m, он РАБОТАЕТ
- (void)viewDidLoad {
[super viewDidLoad];
test();
}
Пока все хорошо. Но проблема возникает, когда я создаю новый класс C ++ в своем проекте, делая вызовы test (). Затем компоновщик жалуется, что символ _test () не найден и projetc НЕ создается.
myClass.h:
#import "test.h"
class myClass
{
int testCall();
}
myClass.mm:
int myClass::testCall()
{
return test();
}
Я получаю:
Неопределенные символы:
"test()", referenced from:
myClass::testCall() in myClass-64D20670AC6C3193.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Вывод команды Ld показывает правильные -ltest и -Lcorrect_paths
Я предполагаю, что мне не хватает некоторых флагов при компиляции библиотеки или в myProject.
Есть идеи или помощь?
Спасибо
Баба.