Подтвердить что ты не робот

Предупреждение о компоновщике Apple Mach-O (id): создание для MacOSX, но соединение с dylib, созданное для iOS

Начиная с некоторого момента в прошлом xCode 4, жалуясь на проблемы с компоновщиком:

ld: предупреждение: создание для MacOSX, но соединение с dylib, созданное для IOS: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks//CoreGraphics.framework/CoreGraphics

Я проверил все, но все еще ничего подозрительного в конфигурации, и он компилируется и запускается. Единственное, что я вижу, это двойные косые черты перед CoreGraphics.framework, почему я не знаю. Попробовал удалить и добавить снова библиотеку на "Фазы сборки", которые не помогли.

4b9b3361

Ответ 1

Иногда легче отлаживать проблемы Xcode, просматривая журнал сборки для используемых им команд.

Если вы строите из командной строки, вы можете получить это сообщение, если не укажете -miphoneos-version-min =

This compiles:
(where conftest.c just contains int main() {})
/Applications/Xcode5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 --sysroot /Applications/Xcode5.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk --sysroot /Applications/Xcode5.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk -miphoneos-version-min=6.0 conftest.c

And this gives the error:
/Applications/Xcode5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 --sysroot /Applications/Xcode5.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk --sysroot /Applications/Xcode5.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk  conftest.c
ld: building for MacOSX, but linking against dylib built for iOS Simulator file '/Applications/Xcode5.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/usr/lib/libSystem.dylib' for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Ответ 2

Проверьте свои пути поиска в каркасе для своей главной цели и вашей тестовой цели.

У меня было много дерьма в моем.

имел старый проект, написанный на XCode 4, и только начал использовать Unit Tests в XCode 5.

Здесь минимум, я должен запустить свой тестовый проект

Project Navigator > click on project at top >
Targets > Build Settings > Framework Search Paths

TARGET:my_project
$(inherited)
"$(SRCROOT)"
"$(SRCROOT)/my_project"

TEST:my_projectTests
"$(SDKROOT)/Developer/Library/Frameworks"    <<XCTest.framework is here
"$(DEVELOPER_LIBRARY_DIR)/Frameworks"
"$(SRCROOT)/.."
"$(SRCROOT)"                             << Documents/my_project
"$(SRCROOT)/my_project"                  << Documents/my_project/my_project

where directory structure is
Documents/my_project
    my_project.xcodeproj
    /my_project

Примечание. Если вы перетащите фреймворк в XCode. XCode 5 имеет плохую привычку жестко кодировать путь

/Users/gbxc/Documents/my_project

должен быть

"$(SRCROOT)"                             << Documents/my_project
"$(SRCROOT)/my_project"                  << Documents/my_project/my_project

поэтому, если вы переместили проект, могут возникнуть проблемы.

Лучший способ проверить правильность заключается в создании нового проекта с одним представлением, который запускает тесты в порядке.

Run the Test action
By default it fails but at least testing is running
then compare the  Framework Search Paths.

Ответ 3

Если вы используете Карфаген и компилируете приложение Mac, выполните поиск по вашему проекту Framework Search Paths, вы можете найти что-то вроде $(PROJECT_DIR)/Carthage/Build/iOS.

Удаление исправления моей проблемы.

Ответ 4

Эта проблема связана с неправильной версией фрейма в Xcode. Проект построен для Mac OS X, но он использует инфраструктуру версии iOS.