2011-11-11 9 views
2

私は最初の統一スクリプトを作成しようとしています。これは、資産/プラグインに位置していると呼ばれるファイルTestPlugin.csためのコードです:Unity Scripting armv7 Error

using UnityEngine; 
using System.Runtime.InteropServices; 

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

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

これは私が生成されたXcodeプロジェクトのclassesフォルダにインポートする二つのファイルのためのコードです:

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 

最後に、これはAssetフォルダ内にあるjavascriptファイルです。

TestPluginTest.js:

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

また、ちょうどこの時点でコンパイルするには、私は必ずしも仕事に、このすべてを期待していないよということに注意してください(余分なポインタとヒントは歓迎されているが)

アーキテクチャのARMv7用

未定義のシンボル::iPhone(実際のデバイス)上に構築しようとしたとき、私はXcodeで取得エラーはこれです「_getString」、から 参照:RegisterMonoModules.oのLDにRegisterMonoModules():記号(S)アーキテクチャのARMv7 collect2は見つかりません:RegisterMonoModules.o

RegisterMonoModules():ldは1つの終了ステータス

から参照 "_getString" を、返さ

LD:記号(S)

collect2はのARMv7アーキテクチャが見つかりません:ldは

1つの終了ステータスを返し、私はstumよペッド!前もって感謝します!

答えて

1

リンカーが署名の処理方法を知らないので、問題はObj-Cインターフェイスにあると思います。私は自己書かれたライブラリを接続したとき、私は純粋なCのコードを含むようにインターフェイスを設計した:

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

interface.h interface.c:

int getString() { 
    // do something 
} 

たぶん便利なブログ投稿:

iPhone & Unity3D: Integrating 3rd Party Static Libraries in Unity3D Generated XCode Projects

Unity Native Plugins: OS X

Clever Martian's Blog - An Experiment with iPhone Native UI and Unity 3 Pro

+0

ので、問題は、それが客観Cで書かれていることでしょうか? – SirYakalot

+0

これは実際に問題を解決しましたが、問題は実際には対話型のC言語で記述する必要があることです。これはお勧めしませんか? – SirYakalot

+0

Unityはhttp://unity3d.com/support/documentation/Manual/Plugins.htmlによるといいえ私は間違ってはいけません:もちろんObj-Cでプラグインコードを書くことはできますが、プラグインを呼び出すC#/ JS用のプレーンC。私のライブラリは50以上のクラスを持ちますが、1つのリーンCインターフェイスを備えています。 – Kay