Mono: DllImport не может загрузить библиотеку '(null)' - PullRequest
0 голосов
/ 12 октября 2010

Я пытаюсь использовать привязки C # ZeroMQ . Однако в Mono 2.8 и OSX 10.6.4, когда я пытаюсь запустить пример приложения, я получаю ошибку DLLImport. В частности:

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_LOG_LEVEL = debug, mono показывает, что ищет libzmq, но постоянно терпит неудачу с такими вещами как:

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

Я попытался переместить libzmq.dylib в локальную папку и настроить файл libzmq.dll.config, оба безрезультатно.

Есть ли очевидная причина, по которой Mono не удается найти libzmq.dylib, который находится в / usr / local / lib? И почему ошибка становится "(нулевой)"?

Ответы [ 2 ]

0 голосов
/ 12 октября 2010

Проблема в том, что библиотека 64-битная.Это можно исправить, скомпилировав libzmq с помощью:

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

Хотя это может привести к поломке библиотек, использующих 64-битную версию (т.е. Python через pyzmq).

0 голосов
/ 12 октября 2010

Я не совсем уверен, но это может быть полезно для чтения:

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

По существу,вам, вероятно, нужно убедиться, что для DYLD_FALLBACK_LIBRARY_PATH установлено местоположение, содержащее ваш dylib.

...