代码之家  ›  专栏  ›  技术社区  ›  Tristan

Mono:DllImport无法加载库'(null)'

  •  0
  • Tristan  · 技术社区  · 14 年前

    我试着用 C# ZeroMQ bindings

    Unhandled Exception: System.DllNotFoundException: libzmq
      at (wrapper managed-to-native) ZMQ/C:zmq_init (int)
      at ZMQ+Context..ctor (Int32 io_threads) [0x00000] in <filename unknown>:0 
      at local_lat.Main (System.String[] args) [0x00000] in <filename unknown>:0
    

    此功能很简单:

        [DllImport("libzmq", CallingConvention = CallingConvention.Cdecl)]
        public static extern IntPtr zmq_init(int io_threads);
    

    当我使用MONO\u LOG\u LEVEL=debug时,MONO显示它正在寻找libzmq,但不断失败,例如:

    Mono: DllImport loading library: './libzmq.dylib'.
    Mono: DllImport error loading library '(null)'.
    

    我试过搬家库zmq.dylib到本地文件夹并设置libzmq.dll.config文件文件,都没用。

    单核细胞增多症找不到明显的原因吗库zmq.dylib,位于/usr/local/lib中?为什么错误会变成“(null)”?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Sandy    14 年前

    我不完全确定,但这可能是有用的阅读:

    http://www.mono-project.com/Interop_with_Native_Libraries#Mac_OS_X_Framework_and_.dylib_Search_Path

    实际上,您可能需要确保DYLD\u FALLBACK\u LIBRARY\u PATH设置为包含dylib的位置。

        2
  •  0
  •   Tristan    14 年前

    ./configure CFLAGS="-O -arch i386" CXXFLAGS="-O -arch i386" LDFLAGS="-arch i386" --disable-dependency-tracking
    

    尽管这可能会破坏使用64位版本(即pyzmq的Python)的库。