2010-10-12 90 views
0

我正在嘗試使用C# ZeroMQ bindings。但是,在Mono 2.8和OSX 10.6.4上,當我嘗試運行示例應用程序時,出現DLLImport錯誤。具體做法是:單聲道:DllImport無法加載庫'(null)'

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 =調試,單表明它尋找libzmq但隨着事情不斷髮生故障,如:

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

我已經嘗試將libzmq.dylib移動到本地文件夾並設置一個libzmq.dll.config文件,都無濟於事。

Mono無法找到位於/ usr/local/lib中的libzmq.dylib是否有明顯的原因?爲什麼錯誤會變成「(null)」?

回答

0

問題是庫是64位的。這可以通過固定用編譯libzmq:

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

雖然這可能會破壞使用64位版本的庫(即通過的Python pyzmq)。