Как добавить фреймворки libz.dylib и libxml2.dylib в аргументы gcc_flags в MonoTouch?

У меня есть статическая библиотека Objective C, которую я пытаюсь импортировать в MonoTouch с помощью btouch. Однако проблема, с которой я сталкиваюсь, заключается в том, что библиотека зависит от libz.dylib и libxml2.dylib, и я не знаю, как включить эти фреймворки в свое приложение MonoTouch.

Я протестировал статическую библиотеку в проекте XCode, и это тестовое приложение компилируется и работает правильно. Сейчас я пытаюсь создать точно такой же образец приложения в MonoTouch, и у меня возникают проблемы с правильными аргументами gcc_flags, чтобы включить все зависимости.

В приложение XCode необходимо было включить следующие фреймворки:

 UIKit.framework
 CFNetwork.framework
 CoreGraphics.framework
 Foundation.framework
 MobileCoreServices.framework
 SystemConfiguration.framework
 libz.dylib
 libxml2.dylib

Кроме того, в XCode мне пришлось включить следующий путь поиска, чтобы найти все необходимые заголовочные файлы: "$(SDK_DIR)"/usr/include/libxml2

Теперь в MonoTouch у меня есть следующий набор в gcc_flags в параметрах сборки:

 -v -v -v -gcc_flags "-framework CFNetwork -framework CoreGraphics -framework Foundation -framework MobileCoreServices -framework SystemConfiguration -I${ProjectDir}/lib/include -I$(SDK_DIR)/usr/include/libxml2 -L${ProjectDir}/lib/ -lOfflineRequest -force_load ${ProjectDir}/lib/libOfflineRequest.a"

Когда я пытаюсь скомпилировать, я получаю длинный список ошибок компоновки, которые, насколько я могу судить, вызваны тем, что libz.dylib и libxml2.dylib не были включены во время компоновки. Кто-нибудь знает, как я могу убедиться, что они включены в MonoTouch?


person BruceHill    schedule 12.08.2011    source источник


Ответы (1)


Попробуйте добавить "-lz -lxml2" к уже имеющимся флагам --gcc_flags. Это укажет gcc добавить libz и libxml2 при компоновке приложения.

Если это не сработает, опубликуйте полный журнал сборки (отредактируйте свое сообщение или заполните отчет об ошибке на bugzilla.xamarin.com и прикрепите журнал сборки).

person poupou    schedule 12.08.2011
comment
Спасибо, поупо!! :) Это именно то, что мне нужно было добавить! Теперь он компилируется и запускается. Спасибо за вашу помощь. :) - person BruceHill; 12.08.2011
comment
мы должны включить библиотеку в проект? - person Jonas Stawski; 15.11.2012
comment
@JonasStawski это то, что делает дополнительная команда, она вручную добавляет в проект родную библиотеку. В большинстве случаев вы добавляете управляемые сборки в проект или проекты привязок (управляемая сборка, в которую встроены собственные библиотеки), поэтому этот шаг выполняется автоматически. - person poupou; 16.11.2012