c# - 尝试导入库 (DLLImport) 获取 System.DLLNotFoundException

标签 c# mono xamarin.ios dllimport

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

   int Get10()
   {
       return 10;
   }

我为它创建了一个名为“Numbers”的目标并构建了项目,该项目创建了一个 libNumbers.a。我将 libNumbers.a 移动到我的 MonoTouch 项目根目录,并在我添加的附加 mtouch 参数区域中:

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

代码编译正常。

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

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

(我也试过 [DllImport ("Numbers.a")])

然后在异常期间调用 Get10() 的函数。这会引发以下异常:

System.DllNotFoundException: libNumbers.a at (wrapper managed-to-native) Jabber.BaseGame:Get10 () at Jabber.BaseGame.Draw (Microsoft.Xna.Framework.GameTime dt) [0x00043] in /Users/ahmedhakeem/Documents/Projects/goodjabberengine/MyCode/Engine/BaseGame.cs:103

据我所知,它似乎无法找到有问题的 dll。

一个可能的原因是我将函数 Get10 调用(并将其导入)到单独​​的库项目(即不是我添加了额外的 mtouch 参数的项目)中的源文件。无法将 mtouch 参数添加到您正在链接的 monotuch 中的库项目,因此我认为这不是一个选项。

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

最佳答案

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

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

关于c# - 尝试导入库 (DLLImport) 获取 System.DLLNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6806906/

相关文章:

c# - 你调用的对象是空的。 (HttpContext.Current.Request)

c# - mono 的逆变编译异常

c# - 如何区分 BackgroundWorker.RunWorkerCompleted 事件处理程序中的不同异常类型

c# - AutoMapper - 展平/展平列表

macos - 使用 Visual Studio Code + ASP.NET 5 + Mono + Kestrel + OS X 调试 Web 项目

.net - 有关 InvalidProgramException 的帮助(无效的 IL 代码?)

c# - 根据特定条件拆分 c# 字符串的正则表达式

xamarin.ios - 是否有关于 MonoTouch AOT 助手的 ServiceStack.Text.JSConfig 文档?

ios - Xamarin.iOS 应用程序项目应用程序无法识别 GoogleService-Info.plist

c# - 识别排序列表中的大差异