Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Rinat93
 Аватар для Rinat93
5 / 5 / 3
Регистрация: 20.05.2012
Сообщений: 32
19.01.2015, 16:45     Подключение статической библиотеки на с++ #1
Написал и скопилировал библиотеку, написанную на с++, на выходе имею test_lib.а файл. Как её подключить в проект в xcode 6? В Build Phases ее указал. Или как сделать импорт хедера в файле. Писал по-разному:
Objective-C
1
2
#import "test_lib/test_lib.h"
#import "test_lib.h"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sum42
 Аватар для Sum42
78 / 10 / 2
Регистрация: 11.10.2010
Сообщений: 87
19.01.2015, 18:29     Подключение статической библиотеки на с++ #2
В build сеттингах "header search paths" прописывали?
Rinat93
 Аватар для 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)
someMan
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27
20.01.2015, 00:35     Подключение статической библиотеки на с++ #4
А для каких архитектур у вас собрана библиотека?
Если я не ошибаюсь, чтобы везде все у вас собиралось (девайсы, симуляторы), библиотека должна быть скомпилирована для armv7, armv7s, i386, x86_64
Vorona
Peace 2 all shining faces
 Аватар для Vorona
661 / 523 / 44
Регистрация: 05.03.2010
Сообщений: 1,270
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
Sum42
 Аватар для 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++
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2015, 20:20     Подключение статической библиотеки на с++
Еще ссылки по теме:

Подключение статической библиотеки, которая сама в себя включает другую статическую библиотеку C++ Qt
Автоматическое подключение к проекту статической библиотеки - зависимости от основной C++ Qt
Подключение статической lib-библиотеки C++
Подключение статической библиотеки в dev c++ C++
Сборка статической библиотеки C++

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

Или воспользуйтесь поиском по форуму:
Rinat93
 Аватар для Rinat93
5 / 5 / 3
Регистрация: 20.05.2012
Сообщений: 32
25.01.2015, 20:20  [ТС]     Подключение статической библиотеки на с++ #7
Спасибо, всем!
проблему пока отложил, как вернусь к ней, отпишу, что у меня срабатоло.
Yandex
Объявления
25.01.2015, 20:20     Подключение статической библиотеки на с++
Ответ Создать тему
Опции темы

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