C# 正在尝试导入库(DLLImport)以获取System.DLLNotFoundException

C# 正在尝试导入库(DLLImport)以获取System.DLLNotFoundException,c#,mono,xamarin.ios,dllimport,C#,Mono,Xamarin.ios,Dllimport,我在xcode中创建了一个静态cocos项目,整个项目由一个名为file.c的.c文件和以下函数组成: int Get10() { return 10; } 我为它创建了一个名为“Numbers”的目标,并构建了这个项目,它创建了一个libNumbers.a。我将libNumbers.a移动到我的MonoTouch项目根目录,并在附加的mtouch参数区域添加了: -gcc_标志“-L${ProjectDir}-L编号-强制加载 ${ProjectDir}/li

我在xcode中创建了一个静态cocos项目,整个项目由一个名为file.c的.c文件和以下函数组成:

   int Get10()
   {
       return 10;
   }
我为它创建了一个名为“Numbers”的目标,并构建了这个项目,它创建了一个libNumbers.a。我将libNumbers.a移动到我的MonoTouch项目根目录,并在附加的mtouch参数区域添加了:

-gcc_标志“-L${ProjectDir}-L编号-强制加载 ${ProjectDir}/libNumbers.a“

代码编译得很好

因此,在我的MonoTouch项目的C#文件中,我添加了以下内容:

    [DllImport ("libNumbers.a")]
    private static extern int Get10 ();
(我也尝试过做[DllImport(“Numbers.a”)))

然后在异常期间调用一个名为Get10()的函数。这将引发以下异常:

System.DllNotFoundException:libNumbers.a at(包装器 在Jabber.BaseGame.Draw上获取10() (Microsoft.Xna.Framework.GameTime dt)[0x00043]英寸 /Users/ahmedhakeem/Documents/Projects/goodjabberengine/MyCode/Engine/BaseGame.cs:103

从我所看到的来看,它似乎无法找到有问题的dll

一个可能的原因是,我调用函数Get10(并将其导入)到一个单独的库项目中的源文件(即,不是我添加了其他mtouch参数的项目)。没有办法在monotouch中将mtouch参数添加到您正在链接的库项目中,所以我认为这不是一个选项


那么,关于如何解决这个问题,有什么想法吗?

如果当符号变为内部(在主应用程序内)时,库与应用程序链接。在这种情况下,正确的声明为:

[DllImport ("__Internal")]
extern static void YourLinkedNativeCode ();