Связывание OIS в XCode на OSX с CMake - PullRequest
2 голосов
/ 24 июня 2011

Я создаю плагин для браузера, который обрабатывает ввод данных с помощью джойстика для всех браузеров и платформ.Он работает на Linux и Windows, но у меня возникают проблемы с подключением к библиотеке OIS в XCode.

Я создал OIS и получил libOIS.a и OIS.dylib и связываю их с CMake следующим образом:

find_library(CARBON NAMES Carbon)
find_library(IOKIT NAMES IOKit)

target_link_libraries(${PROJECT_NAME}
 ${PLUGIN_INTERNAL_DEPS}
 ${CARBON}
 ${IOKIT}
 "${CMAKE_CURRENT_SOURCE_DIR}/lib/libOIS.a"
)

Но я все еще получаю ошибки каждый раз, когда пытаюсь использовать классы OIS из своего кода и собирать проект:

ld warning: in /Users/Lana/Documents/STRd6/boomsticks/Boomstick/lib/libOIS.a, missing required architecture x86_64 in file

Undefined symbols:
 "OIS::InputManager::destroyInputSystem(OIS::InputManager*)", referenced from:
     JoysticksHandler::~JoysticksHandler()in Joysticks.o
     JoysticksHandler::~JoysticksHandler()in Joysticks.o
 "OIS::InputManager::createInputSystem(std::multimap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&)", referenced from:
     JoysticksHandler::initialize()       in Joysticks.o
 "OIS::InputManager::enableAddOnFactory(OIS::InputManager::AddOnFactories)", referenced from:
     JoysticksHandler::initialize()       in Joysticks.o
 "OIS::InputManager::getNumberOfDevices(OIS::Type)", referenced from:
     JoysticksHandler::initialize()       in Joysticks.o
 "typeinfo for OIS::Exception", referenced from:
     GCC_except_table44 in Joysticks.o
 "OIS::InputManager::createInputObject(OIS::Type, bool, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
     JoysticksHandler::initialize()       in Joysticks.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

Я ничего не знаю о XCode, но мне удалось получить такое же построение кода с очень похожим процессом в Linux и Windows.

1 Ответ

0 голосов
/ 10 сентября 2013

Предупреждение компоновщика дает подсказку:

ld warning: in /...k/lib/libOIS.a, missing required architecture x86_64 in file

Компоновщик сообщает вам, что вы пытаетесь связать файл библиотеки, который не имеет реализации для архитектуры x86_64.Как вы собрали эту библиотеку?

Либо вы создаете универсальный двоичный исполняемый файл, а символы просто отсутствуют для версии x86_64 ... или, возможно, у вас есть файл заголовка для более новой версиибиблиотеки, но не обновили файл .a, а символы, на которые вы ссылаетесь в коде приложения, просто не существуют в файле .a в дереве исходного кода ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...