单声道忽略app.config文件中的dllmaps

看起来单声道忽略本地configuration文件中的dllmaps。

我想移植我的.NET应用程序在Linux(ubuntu),调用本地库,所以我有dllmaps使我的代码工作。 单声道文件说你必须为something.exe创build一个something.exe.config,并在其中放置应用程序特定的configuration。 它parsing文件(因为它抱怨,如果我犯了一些拼写错误),文件名是正确的,但它似乎忽略了DLL文件。

configuration文件很简单:

<configuration> <dllmap dll="i:openal32.dll" target="libopenal.so" /> </configuration> 

单声道没有findopenal32.dll并抛出DllNotFoundException。 但是,如果我复制主/ etc / mono / config文件中的dllmap条目,那么一切都很好。 如果做一个$ MONO_LOG_LEVEL =debugging单声道…伎俩,看看它做了什么,我看到有没有尝试加载libopenal.so所有。 但是很多尝试加载libopenal32.dll,./libopenal32.dll libopenal32.so,openal32.so等文件。

可能我碰到了一个单声道的bug?

我想将这个configuration文件打包到归档文件中,我不想问我的用户如何处理/ etc / mono / config文件。

有任何想法吗?

所有的DllImport属性在代码中使用“openal32.dll”还是一些使用“openal32”而不是? 在任何情况下,配置文件是指包含P / Invoke方法的程序集:最可能的问题是,当P / Invoke方法位于单独的库程序集中时,您为主程序集创建了配置。 只需将该文件重命名为OpenAlUsingAssembly.dll.config。

我只是在尝试在Ubuntu 12.04下运行我的OpenAL(实际上是OpenTK)测试程序时遇到同样的问题。 最后我需要做的是:

 sudo apt-get install libopenal1 

为了获得OpenAL运行时库,然后创建一个名为OpenTK.dll.config的文件,其中包含:

 <configuration> <dllmap dll="i:openal32.dll" target="libopenal.so.1" /> </configuration> 

其中将OpenTK.dll中的导入从windows openal32.dll文件映射到正确版本的Linux下的共享库,这是我的情况是libopenal.so.1(它实际上只是一个链接到libopenal.so。 1.13.0)。