gpt4 book ai didi

DLL 的 MonoTouch System.EntryPointNotFoundException

转载 作者:行者123 更新时间:2023-12-04 05:08:25 24 4
gpt4 key购买 nike

我正在尝试使用我的 MonoTouch 应用程序访问的一些 native 代码函数制作一个 DLL。我遵循了 monotouch-bindings 使用的一般方法,您可以在其中:

  • 制作一个 xcode 项目并在其中放入一些 native 代码
  • 使用 xcodebuild
  • 构建静态库(.a 文件)
  • 使用 --link-with 运行 btouch 以生成 .dll 文件
  • 在我的 MonoTouch 应用程序中添加对 .dll 文件的引用

  • .. 但是每当我尝试在我的应用程序中使用这些功能时,我都会得到 System.EntryPointNotFoundException。这是我正在尝试做的每件事的代码:

    在 .cpp 文件中:
    extern "C" {
    int SomeFunction();
    }

    int SomeFunction() {
    ...
    }

    用于构建 .a 文件的命令行
    xcodebuild -project MyStaticLibrary.xcodeproj -target MyStaticLibrary -sdk iphonesimulator -configuration Release clean build

    带有绑定(bind) 的 .cs 文件 (NativeBindings.cs)
    public class MyStaticLibraryBindings
    {
    [ DllImport( "__Internal" ) ] public extern static int SomeFunction();
    }

    DLL 的 AssemblyInfo.cs
    using System;
    using MonoTouch.ObjCRuntime;

    [assembly: LinkWith ("libMyStaticLibrary.a", LinkTarget.Simulator | LinkTarget.ArmV7 | LinkTarget.ArmV7s, IsCxx = true, ForceLoad = true, Frameworks = "", WeakFrameworks = "")]

    构建 .dll 的命令行
    btouch -x=NativeBindings.cs AssemblyInfo.cs --out=NativeBindings.dll --link-with=libMyStaticLibrary.a,libMyStaticLibrary.a

    .. DLL 构建良好,我的应用程序在编译期间看到 MyStaticLibraryBindings.SomeFunction 函数,但在运行时调用它时,我得到 System.EntryPointNotFoundException。

    我已经验证 libMyStaticLibrary.a 确实包含 SomeFunction:
    ~/build> nm libMyStaticLibrary.a*
    00000167 T _SomeFunction

    最佳答案

    此外,在您的库中找到的符号是 _SomeFunction当您尝试 P/Invoke SomeFunction .在某些情况下,只有使用正确的前缀才能进行绑定(bind)

    关于DLL 的 MonoTouch System.EntryPointNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210123/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com