Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
Rinat93
5 / 5 / 3
Регистрация: 20.05.2012
Сообщений: 32
#1

Подключение статической библиотеки на с++ - Программирование iOS

19.01.2015, 16:45. Просмотров 1163. Ответов 6
Метки нет (Все метки)

Написал и скопилировал библиотеку, написанную на с++, на выходе имею test_lib.а файл. Как её подключить в проект в xcode 6? В Build Phases ее указал. Или как сделать импорт хедера в файле. Писал по-разному:
Objective-C
1
2
#import "test_lib/test_lib.h"
#import "test_lib.h"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2015, 16:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подключение статической библиотеки на с++ (Программирование iOS):

Использование Core Data в статической библиотеке - Программирование iOS
Доброго времени суток. Прошу у вас помощи в разъяснение важного мне вопроса. Я пишу статическую библиотеку для iOS. Всё бы хороше, да...

Подключение статической библиотеки в VS - C++
Скачал проект, он использует x.lib. В свойствах проекта, в разделе Linker, поле Additional Library прописан путь к библиотекам. Но нигде...

Подключение статической lib-библиотеки - C++
есть lib sqlite3.lib однако при попытке использовать функции из sqlite3.lib получаю следующее 1>msvcrt.lib(ti_inst.obj) : error...

Подключение статической библиотеки в dev c++ - C++
Подскажите пожалуйста как подключить библиотеку к проекту где она будет использоваться? Я скопировала заголовочный файл и файл срр в...

Подключение статической библиотеки (libxls) - C++
Здравствуйте, недавно столкнулся с необходимостью читать из .xls файла, нашел для этого библиотеку libxls. В их readme написано, что они "A...

Автоматическое подключение к проекту статической библиотеки - зависимости от основной - C++ Qt
Есть основное консольное приложение. Есть моя статическая библиотека, которую я подключаю к основному проекту. Есть ещё одна моя...

6
Sum42
78 / 10 / 2
Регистрация: 11.10.2010
Сообщений: 87
19.01.2015, 18:29 #2
В build сеттингах "header search paths" прописывали?
0
Rinat93
5 / 5 / 3
Регистрация: 20.05.2012
Сообщений: 32
19.01.2015, 20:37  [ТС] #3
вот посмотрите пожалуйста, я подробней опишу, как все делал
вот что я написал на с++ в eclipse
TestLib.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <string>
 
using namespace std;
 
class TestLib{
private:
    std::string status;
public:
    TestLib(std::string);
    void setStatus(std::string);
    std::string getStatus();
};
TestLib.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <string>
#include "TestLib.h"
using namespace std;
 
TestLib::TestLib(string status_p){
    this->status = status_p;
}
 
void TestLib::setStatus(string status_p){
    this->status = status_p;
}
 
string TestLib::getStatus(){
    return this->status;
}
Все это дело я скомпилил в libTestLib.a
Затем перенес драгом в проект хедер и саму либу и нигде не импортировал его. В линках он сам прописался.
Написал:
Objective-C
1
#import "TestLib.h"
и при компиляции проекта ошибка: TestLib.h:1:10: 'string' file not found
Затем в параметрах указал: Compile Sorces As: Objective-C++
и возникает следующая ошибка, дальше которой я не смог продвинуться
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Ld /Users/admin/Library/Developer/Xcode/DerivedData/xcode_test_lib-hbzvovuzzycbhlfsnuydcgoumgis/Build/Products/Debug-iphonesimulator/xcode_test_lib.app/xcode_test_lib normal x86_64
    cd /Users/admin/Documents/xcode/xcode_test_lib
    export IPHONEOS_DEPLOYMENT_TARGET=8.0
    export PATH="/Applications/Xcode6-Beta5.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode6-Beta5.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode6-Beta5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode6-Beta5.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk -L/Users/admin/Library/Developer/Xcode/DerivedData/xcode_test_lib-hbzvovuzzycbhlfsnuydcgoumgis/Build/Products/Debug-iphonesimulator -L/Users/admin/Documents/workspace/TestLib/Release -L/Users/admin/Documents/workspace/TestLib/test_lib -F/Users/admin/Library/Developer/Xcode/DerivedData/xcode_test_lib-hbzvovuzzycbhlfsnuydcgoumgis/Build/Products/Debug-iphonesimulator -filelist /Users/admin/Library/Developer/Xcode/DerivedData/xcode_test_lib-hbzvovuzzycbhlfsnuydcgoumgis/Build/Intermediates/xcode_test_lib.build/Debug-iphonesimulator/xcode_test_lib.build/Objects-normal/x86_64/xcode_test_lib.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -objc_abi_version -Xlinker 2 -ObjC -stdlib=libc++ -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=8.0 -lTestLib -Xlinker -dependency_info -Xlinker /Users/admin/Library/Developer/Xcode/DerivedData/xcode_test_lib-hbzvovuzzycbhlfsnuydcgoumgis/Build/Intermediates/xcode_test_lib.build/Debug-iphonesimulator/xcode_test_lib.build/Objects-normal/x86_64/xcode_test_lib_dependency_info.dat -o /Users/admin/Library/Developer/Xcode/DerivedData/xcode_test_lib-hbzvovuzzycbhlfsnuydcgoumgis/Build/Products/Debug-iphonesimulator/xcode_test_lib.app/xcode_test_lib
 
Undefined symbols for architecture x86_64:
  "_NSSQLiteStoreType", referenced from:
      -[AppDelegate persistentStoreCoordinator] in AppDelegate.o
  "_OBJC_CLASS_$_NSManagedObjectContext", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_NSManagedObjectModel", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_NSPersistentStoreCoordinator", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_UIResponder", referenced from:
      _OBJC_CLASS_$_AppDelegate in AppDelegate.o
  "_OBJC_CLASS_$_UIViewController", referenced from:
      _OBJC_CLASS_$_ViewController in ViewController.o
  "_OBJC_METACLASS_$_UIResponder", referenced from:
      _OBJC_METACLASS_$_AppDelegate in AppDelegate.o
  "_OBJC_METACLASS_$_UIViewController", referenced from:
      _OBJC_METACLASS_$_ViewController in ViewController.o
  "_UIApplicationMain", referenced from:
      _main 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)
0
someMan
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27
20.01.2015, 00:35 #4
А для каких архитектур у вас собрана библиотека?
Если я не ошибаюсь, чтобы везде все у вас собиралось (девайсы, симуляторы), библиотека должна быть скомпилирована для armv7, armv7s, i386, x86_64
0
Vorona
Peace 2 all shining faces
669 / 531 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
20.01.2015, 05:10 #5
Цитата Сообщение от Rinat93 Посмотреть сообщение
и при компиляции проекта ошибка: TestLib.h:1:10: 'string' file not found
да и тут явно говорит на что ругается

вы в .m файле подключаете TestLib.h, который в свою очередь импортирует <string>
Xcode для .m файлов использует компиляторы clang или llvm-gcc, а вот уже для .mm файлов он использует clang++ или llvm-g++

Потому либо убедитесь, что вы не импортируете <string> в .h файле (который потом подключаете в .m), либо измените разрешение .m на .mm

И да, зайдите в Build Settings вашего таргета и убедитесь или правильно установлены header search paths к хедерам вашей библиотеки и library search paths к самой библиотеке, а так же она присутствует в Build Phases -> Link Binary With Libraries

А вообще поищите лучше на просторах интернета какую-то литературу по созданию cpp библиотек или их интеграцию в iOS или Mac OS проекты, которые пишутся на Objective-C
0
Sum42
78 / 10 / 2
Регистрация: 11.10.2010
Сообщений: 87
21.01.2015, 15:31 #6
Соберите вашу либу в xcode для той-же самой архитектуры для которой пишите приложение(или сразу с несколькими архитектурами как сказал someMan)

Для 64-битного симулятора этот как раз x86_64

Vorona , ошибку со <string> он уже пофиксил когда указал: Compile Sorces As: Objective-C++
0
Rinat93
5 / 5 / 3
Регистрация: 20.05.2012
Сообщений: 32
25.01.2015, 20:20  [ТС] #7
Спасибо, всем!
проблему пока отложил, как вернусь к ней, отпишу, что у меня срабатоло.
0
25.01.2015, 20:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2015, 20:20
Привет! Вот еще темы с ответами:

Подключение статической библиотеки, которая сама в себя включает другую статическую библиотеку - C++ Qt
Есть проект с подпроектами в QtCreator. Допустим есть три проекта: 1. Статическая библиотека A 2. Статическая библиотека B, которая...

Создание статической библиотеки - C Linux
Здравствуйте, подскажите плиз что я не так делаю. Есть три файлика, с расширением .с func1.c : int f1() ...

Создание статической библиотеки - C++
Вообщем надо создать статическую библиотеку lib для классов. Классов очень много и они разбиты по хедерам .h . Я создал новый проект в...

Сборка статической библиотеки - C++
Есть библиотека из 2 следующих файлов: //mylib.h #ifndef __MYLIB_H__ #define __MYLIB_H__ void hello();


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru