繁体   English   中英

Mono中的DLL配置

[英]DLL Config in Mono

我正在尝试获取Svn.NET( http://www.pumacode.org/projects/svndotnet/ )库,以便在我的Mono项目中使用。 我尝试编译它的ockapp-> svnmockapp项目( http://www.pumacode.org/projects/svndotnet/browser/trunk/SvnMockApp ),我能够正确地引用并正确地进行编译。

我了解它引用了另外两个模块libapr(libapr-1.so.0)和svn_client(libsvn_client-1.so.0),通过它们我在/ bin / Debug中创建了PumaCode.SvnDotNet.dll.config。

这就是我为尝试使模拟应用程序至少输出某些东西以表明它确实与SVN接口所做的所有尝试。 但是,它不起作用。

输入的不与SVN接口的命令可以正常工作:

$ mono SvnTest.exe -usage
Usage: SvnTest <subcommand> [options]
Short Options: ~?.V
Subcommands: add, checkout[co], status[st], update[up]
For help on subcommands, use the -?/--help subcommand option.

尝试访问SVN的命令将引发异常:

$ mono SvnTest.exe st
An exception was thrown by the type initializer for PumaCode.SvnDotNet.AprSharp.Apr

Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object
  at PumaCode.SvnDotNet.SubversionSharp.SvnMockApp.CmdBase.Run (PumaCode.SvnDotNet.SubversionSharp.SvnMockApp.SubCommand sc, System.String[] args) [0x00000]
  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000]
  --- End of inner exception stack trace ---
  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000]
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000]
  at PumaCode.SvnDotNet.SubversionSharp.SvnMockApp.Application.Run (System.String[] args) [0x00000]
  at PumaCode.SvnDotNet.SubversionSharp.SvnMockApp.Application.Main (System.String[] args) [0x00000]

使用MONO_DEBUG_LEVEL =“ debug”,我们将以下日志粘贴到此处

在日志的末尾,我们看到了以下内容:

.
.
.
Mono-INFO: DllImport attempting to load: 'libapr-1'.
Mono-INFO: DllImport loading location: 'libapr-1.so'.
Mono-INFO: DllImport error loading library: 'libapr-1.so: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport loading library: './libapr-1.so'.
Mono-INFO: DllImport error loading library './libapr-1.so: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport loading: 'libapr-1'.
Mono-INFO: DllImport error loading library 'libapr-1: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport attempting to load: 'libapr-1'.
Mono-INFO: DllImport loading location: 'libapr-1.so'.
Mono-INFO: DllImport error loading library: 'libapr-1.so: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport loading library: './libapr-1.so'.
Mono-INFO: DllImport error loading library './libapr-1.so: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport loading: 'libapr-1'.
Mono-INFO: DllImport error loading library 'libapr-1: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport attempting to load: 'libapr-1'.
Mono-INFO: DllImport loading location: 'libapr-1.so'.
Mono-INFO: DllImport error loading library: 'libapr-1.so: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport loading library: './libapr-1.so'.
Mono-INFO: DllImport error loading library './libapr-1.so: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport loading: 'libapr-1'.
Mono-INFO: DllImport error loading library 'libapr-1: cannot open shared object file: No such file or directory'.
An exception was thrown by the type initializer for PumaCode.SvnDotNet.AprSharp.Apr

我尝试在SvnTest.exe存在的目录中对适当的模块进行符号链接,但这仍然存在。

我怎样才能解决这个问题?

我是否将PumaCode.SvnDotNet.dll.config放在错误的文件夹中? (我将其放在/ bin / Debug并尝试了/ bin)

我该怎么办才能补救?

感谢您的热心帮助! 非常感激!

这是配置文件:

(PumaCode.SvnDotNet.dll.config)

<configuration>
     <dllmap dll="libapr" target="/usr/lib/libapr-1.so.0"/>
     <dllmap dll="svn_client-1" target="/usr/lib/libsvn_client-1.so.0"/>
</configuration>

您的配置文件没有正确的dll参考。 在日志中,Mono尝试加载libapr-1库,但是您的配置文件只有libapr项。 我认为正确的映射应该是:

<configuration>
    <dllmap dll="libapr-1" target="/usr/lib/libapr-1.so.0"/>
    <dllmap dll="svn_client-1" target="/usr/lib/libsvn_client-1.so.0"/>
</configuration>

通过将dllmap手动添加到/ etc / mono / config来解决它,这不是最好的方法,但至少可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM