Я создал статический проект cocos в xcode, весь проект состоял из одного файла .c с именем File.c и этой функции:
int Get10()
{
return 10;
}
Я создал для него цель под названием 'Numbers' ипостроил проект, который создал libNumbers.a.Я переместил libNumbers.a в мой корневой каталог проектов MonoTouch и в область дополнительных аргументов mtouch добавил:
-gcc_flags "-L $ {ProjectDir} -lNumbers -force_load $ {ProjectDir} / libNumbers.a "
Код скомпилирован нормально.
Итак, в файле C # в моем проекте MonoTouch я добавил следующее:
[DllImport ("libNumbers.a")]
private static extern int Get10 ();
(я такжепопытался выполнить [DllImport ("Numbers.a")])
Затем во время исключения была вызвана функция Get10 ().Это вызывает следующее исключение:
System.DllNotFoundException: libNumbers.a at (Jabber.BaseGameGame: Get10 () в Jabber.BaseGame.Draw (Microsoft.Xna.Framework).GameTime dt) [0x00043] в /Users/ahmedhakeem/Documents/Projects/goodjabberengine/MyCode/Engine/BaseGame.cs:103
Из того, что я вижу, похоже, что он не может найтиdll в вопросе.
Одной из возможных причин является то, что я вызываю функцию Get10 (и импортирую ее) в исходный файл в отдельном проекте библиотеки (т.е. не в проект, в который я добавил дополнительные аргументы mtouch).Невозможно добавить аргументы mtouch к проекту библиотеки в monotouch, к которому вы привязываете, поэтому я не думаю, что это вариант.
Так есть какие-нибудь идеи, как это исправить?