2013-08-28 51 views
1

我試圖按照這個question有效地使用MonoMac的sqlite自定義版本。在monomac上使用dllmap

但是,使用dllmap似乎沒有工作。

我定製dylib被部署到[myapp.app]/Contents/Frameworks/mycustomlib.dylib

otool -L mycustomlib.dylib輸出看起來是正確的:

@executable_path/../Frameworks/mycustomlib.dylib (compatibility version 0.0.0, current version 0.0.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0) 

myapp.exe.config文件看起來像這樣:

<?xml version="1.0" encoding="UTF-8" ?> 
<configuration> 
    <dllmap dll="sqlite3" target="@executable_path/../Frameworks/mycustomlib.dylib" os="!windows" /> 
</configuration> 

而且我已經驗證,這是與myapp.exe一起復制到[MyApp.app]/Contents/MonoBundle中。

我可以強制這個工作,通過重新編譯Mono.Data.Sqlite並直接用mycustomlib替換sqlite3的引用。但是,dllmap路由更好。

我錯過了什麼?我怎樣才能調試呢?

+0

你曾經解決過這個問題嗎?我完全停留在此。在我的情況下,我的dylib最終在Resources中(儘管我想知道你是如何進入「Frameworks」文件夾的?)。你在使用Xamarin Studio嗎? – tofutim

+0

好的,我只是意識到將dylib放入NativeReferences會創建Frameworks文件夾,儘管我不確定如何在Debug中訪問它,您是否也有Frameworks文件夾?我的dllmap仍然不起作用:P – tofutim

+0

沒有得到dllmap的工作。至於/ Frameworks文件夾,我有一個構建後的shell腳本,用於創建目錄結構並將文件移動到那裏 – TheNextman

回答

1

將dllmap配置從myapp.exe.config移動到新的Mono.Data.Sqlite.dll.config文件以使重新映射生效。

+0

我記得我嘗試過,但它不起作用......但我不記得具體情況。 Upvote for you,謝謝你的建議。 – TheNextman

+1

沒問題,我在嘗試使用sqlcipher而不是打包的sqlite3時遇到了同樣的問題,這對我來說是個詭計。 –