Unity Scripting armv7 Ошибка - PullRequest
       10

Unity Scripting armv7 Ошибка

2 голосов
/ 11 ноября 2011

Я пытаюсь написать свой первый сценарий единства. Это код для файла с именем TestPlugin.cs, который находится в Assets / Plugins:

using UnityEngine; 
using System.Runtime.InteropServices;

public class TestPlugin : MonoBehaviour 
{
    [DllImport ("__Internal")]
    private static extern int getString ();

    public static void Awake () {
      print (getString ());
    }
} 

Это код для двух файлов, которые я импортирую в папку классов сгенерированного проекта xCode:

TestPlugin.h:

#import <Foundation/Foundation.h>

@interface TestPlugin : NSObject

-(int)getString;

@end

TestPlugin.m:

#import "TestPlugin.h"

@implementation TestPlugin

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }

    return self;
}

- (int)getString
{
    return 7;
}

@end

Наконец, это файл javascript, который находится внутри папки активов.

TestPluginTest.js:

function Update () 
{
TestPlugin.Awake ();
}

Кроме того, обратите внимание, что я не обязательно ожидаю, что все это сработает, просто чтобы скомпилировать на этом этапе (хотя дополнительные указатели и советы приветствуются)

Ошибка, которую я получаю в xCode при попытке встроить в iPhone (фактическое устройство), такова:

Неопределенные символы для архитектуры armv7: "_getString", ссылка от: RegisterMonoModules () в RegisterMonoModules.o ld: символ (ы) не найдены для архитектуры armv7 collect2: ld вернул 1 состояние выхода

"_ getString", на который ссылаются из:

RegisterMonoModules () в RegisterMonoModules.o

ld: символ (ы) не найден для архитектуры armv7

collect2: ld вернул 1 статус выхода

Я в тупике! Заранее спасибо!

1 Ответ

1 голос
/ 11 ноября 2011

Я думаю, что проблема заключается в интерфейсе Obj-C, потому что компоновщик не знает, как обрабатывать подпись. Когда я подключил самописную библиотеку, я разработал интерфейс, содержащий только чистый код C:

interface.h

#ifdef __cplusplus
    extern "C" {
#endif    
    int getString();        
#ifdef __cplusplus
    }
#endif

interface.c:

int getString() {
    // do something
}

Возможно полезные посты в блоге:

iPhone & Unity3D: интеграция сторонних статических библиотек в проекты XCode, созданные Unity3D

Родные плагины Unity: OS X

Блог Умного Марсианина - эксперимент с собственным интерфейсом iPhone и Unity 3 Pro

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