我正在使用Qt4Dotnet project来移植最初在Linux和Mac上用C#编写的应用程序。端口到Linux并没有付出太多努力,工作正常。但Mac(10.4 Tiger)有点固执。
问题是:当我尝试启动我的应用程序时,它会抛出异常。异常表明com.trolltech.qt.QtJambi_LibraryInitializer
无法找到所有必要的ibraries。 QtJambi库初始化程序使用java.library.path
VM环境变量。此变量包括当前工作目录。我把所有必要的库放在一个工作目录中。当我尝试从MonoDevelop IDE运行应用程序时,初始化程序可以加载一个库,但其他库“缺失”:
An exception was thrown by the type initializer for com.trolltech.qt.QtJambi_LibraryInitializer ---> java.lang.RuntimeException: Loading library failed, progress so far:
No 'qtjambi-deployment.xml' found in classpath, loading libraries via 'java.library.path'
Loading library: 'libQtCore.4.dylib'...
- using 'java.library.path'
- ok, path was: /Users/chin/test/bin/Debug/libQtCore.4.dylib
Loading library: 'libqtjambi.jnilib'...
- using 'java.library.path'
libQtCore.4.dylib
和libqtjambi.jnilib
都在同一目录中。当我尝试从命令提示符运行它时,初始化程序甚至无法加载libQtCore.4.dylib
。
我正在使用Qt4Dotnet v4.5.0(目前最新版本)和QtJambi v4.5.2库。这可能是问题的根源,但我既不能自己编译Qt4Dotnet v4.5.2也不能找到QtJambi v4.5.0库。 Project的页面声明应该将某种补丁应用于QtJambi的源代码以便与Mono框架兼容,但是此补丁尚未发布。如果没有这个补丁,应用程序会以一种奇怪的方式崩溃(除了库寻找错误)。
我必须注意原始的QtJambi完全加载了所有必需的库,因此可能是用于将QtJambi转换为.Net库的IKVM编译器的问题。
有什么建议我如何克服这个问题?
答案 0 :(得分:1)
我想我今天早些时候遇到了同样的问题。一旦我将libikvm-native.dylib从我当前的Mono复制到我的项目的exe目录,它就有效了。弗兰克提醒我这样做on the list here。