你可以很容易找到,其中單是由MONO_LOG_LEVEL調試和MONO_LOG_MASK過濾設置爲僅DLL有關的消息尋找一個機庫。
export MONO_LOG_LEVEL=debug
export MONO_LOG_MASK=dll
mono yourprogram.exe
或作爲一個襯墊,所以你不必取消設置ENV瓦爾:
MONO_LOG_LEVEL=debug MONO_LOG_MASK=dll mono yourprogram.exe
單聲道和OS-X動態鏈接編輯器(「人dyld的」瞭解詳細信息)不需要DYLD_LIBRARY_PATH設置爲當前目錄('。')。注意:如果您的意圖是Linux,則需要LD_LIBRARY_PATH包含當前目錄。
- 移動這些dll映射文件,將其從等式中移除。
- 取消設置DYLD_LIBRARY_PATH
- CD中包含根據您的CIL EXE,DLL和本地dylib(S)
- MONO_LOG_LEVEL =調試MONO_LOG_MASK = DLL單yourprogram.exe
使用本地的dll目錄/共享庫跟蹤輸出,你可以跟蹤不被發現的庫(或其依賴關係之一),或者如果它是你的單聲道版本錯誤的ARCH。
如果您仍然有問題,我們就需要知道你正在使用您正在使用的選項編譯它(或拱形的版本,如果通過的NuGet得到它),這SQLite庫。張貼您的DLL跟蹤輸出將迅速解決事情。
注:
我假設你使用的是System.Data.SQLite庫,並編譯選項 「/ P:UseInteropDll = TRUE/P:UseSqliteStandard =假」。
單聲道包括一個SQLite在它的默認安裝,它是在OS-X 32位:
file /Library/Frameworks/Mono.framework/Versions/4.0.2/lib/libsqlite3.dylib
/Library/Frameworks/Mono.framework/Versions/4.0.2/lib/libsqlite3.dylib: Mach-O dynamically linked shared library i386
假設你正在使用從單聲道的OS-X安裝程序包,因此所得到的32位版本的Mono,因此需要本地庫的32位版本。
>>file `which mono`
/usr/bin/mono: Mach-O executable i386
的/usr/lib/libsqlite3.0.dylib是一個多ARCH脂肪二進制文件,這樣庫是沒有問題的,但你的調試輸出可能會顯示另外一個這是一個問題,
>>file /usr/lib/libsqlite3.0.dylib
libsqlite3.0.dylib: Mach-O universal binary with 3 architectures
libsqlite3.0.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
libsqlite3.0.dylib (for architecture i386): Mach-O dynamically linked shared library i386
libsqlite3.0.dylib (for architecture x86_64h): Mach-O 64-bit dynamically linked shared library x86_64
有兩件事:'OS X'不使用'Windows'的'$ PATH'變量,動態庫是'dylibs',而不是'dlls'。爲了使'dll'在單聲道和'OS X'上正常工作,它需要使用'Dllmap'進行映射。 –
@ l'L'l:[這個軟件](https://github.com/aegif/CmisSync)在Mono上使用Mac上的SQLite,不包含任何'Dllmap' ...仍然試圖找到它如何管理。 –
看起來像* * dllmaps](https://github.com/aegif/CmisSync/search?utf8=%E2%9C%93&q=dllmap),所以我會想象[interop.dll](https ://github.com/aegif/CmisSync/search?utf8 =%E2%9C%93&q = Interop.dll)也可能需要它。 –