2011-07-24 4 views
3

を取得(DLLIMPORT)ライブラリをインポートしようとすると、プロジェクト全体がFILE.Cと呼ばれる単一の.cファイルと、この機能から構成され私はNumbersというターゲットを作成し、libNumbers.aを作成したプロジェクトをビルドしました。私は私のMonoTouchでは、ルートディレクトリと私が追加された追加のmTouch引数領域にプロジェクトにlibNumbers.aを移動:私はXcodeで静的ココスプロジェクトを作成しSystem.DLLNotFoundExceptionに

-gcc_flags "-L $ {} PROJECTDIR -lNumbersを $ {} PROJECTDIR /libNumbers.aを-force_load"

コードは正しくコンパイルされます。

は、だから私のMonoTouchでプロジェクトのC#ファイルに私は、次を追加しました:

[DllImport ("libNumbers.a")] 
    private static extern int Get10(); 

(私もやってみました[DLLIMPORT( "Numbers.a")])すると

例外中Get10()と呼ばれる関数Jabber.BaseGame.Draw でGet10()(Microsoft.Xna.Framework:(ラッパー 管理ツーネイティブ)Jabber.BaseGameでlibNumbers.a:

System.DllNotFoundException:これは、次の例外がスローされます。私はそれが問題のDLLを見つけることができますように見える見ることができるものから、 /Users/ahmedhakeem/Documents/Projects/goodjabberengine/MyCode/Engine/BaseGame.cs:103

でGameTimeのDT)[0x00043] 。

考えられる原因の1つは、別のmtouch引数を追加したプロジェクトではなく、別のライブラリプロジェクトのソースファイルにGet10関数を呼び出してインポートすることです。あなたがリンクしているモノトゥアのライブラリプロジェクトにmtouch引数を追加する方法はないので、それはオプションではないと思います。

これを修正する方法のアイデアはありますか?

答えて

3

シンボルが内部(メインアプリ内)になったときにライブラリがアプリにリンクされている場合。この場合、正しい宣言は次のようになります。

[DllImport ("__Internal")] 
extern static void YourLinkedNativeCode(); 
関連する問題