在64位JVM上,在Linux中,无论本机库加载是什么,都会尝试加载32位库.
我问这是一个clojure和(甚至更多)java n00b.
我到目前为止找到的答案(在Leiningen/Clojure中使用lwjgl似乎是搜索结果中最突出的)似乎是旧版本的lein,问题围绕着:native-dependencies或project.clj中的LD_LIBRARY_PATH.
我正在重新发明轮子并将基本的jME教程翻译成clojure作为一个小的个人家庭作业,以学习它们.在迄今为止我发现人们如何做到这一点的所有教程和示例中,这部分似乎"正常工作".
(在Windows下,它对我来说很好用).
我正在使用lein构建一个新的空项目.我已经在clojars上设置了各种版本的jMonkeyEngine库的依赖项.在'lein deps'之后,liblwjgl64.so和libopenal64.so结束在我的项目目录的根目录中.
当我尝试'lein run'时,它会显示设置的Monkey splash屏幕,然后在尝试实际运行时抛出异常,因为它正在尝试加载liblwjgl.so.
该文件存在于target/native/linux和target/native/linux64下(但奇怪的是,不在target/native/linux32下).
如果我将它想要的文件复制到项目的根目录中,则错误会更改为"错误的ELF类:ELFCLASS32(可能的原因:架构字宽度不匹配)",这是Google一直在给我的另一组讨论.这里提到的解决方案似乎都相当于"切换到32位JVM以使Minecraft正常工作",但我更倾向于获得有关正在发生的事情的实际线索.
这个问题在我可以在clojars中得到的每一组依赖库都非常一致(回到版本2,无论如何......那些有更大的问题,似乎不值得深入研究).查尔斯污渍在窗户上为我设置了"Just Worked".
到目前为止,我能够提出的最好的假设是这样的:
我怀疑某个版本必须在某个时候指定.http://docs.oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/syntax.html#resources提到了一个看起来非常合适的资源属性,但这似乎没什么用与JNLP合作.我想知道是否有一个明显的文件坐在.jar的某个地方我无法找到(这里是我的n00bishness发挥作用...我真的不知道我在寻找什么).
那么,有没有人有任何关于我应该看的地方或者我应该问什么的指示?我不知道甚至不知道从哪里开始.讨论jMonkeyEngine论坛,#clojure或者lwjgl邮件列表(或者他们使用的任何东西......我实际上根本没有考虑过他们的一面......我应该吗?)
接下来我将尝试将jME库捆绑到我自己的存储库中.这似乎是一项艰巨而艰巨的任务,当我正在解决这个问题时,我决定在这里提出要求.
我知道这很模糊,我为此道歉.我的google-fu让我失望了.我很感激任何人都可以提出任何建议.
提前致谢!
我正在为基于Qt 3(办公室政治)的游戏添加OpenGL支持.基础知识(QGLWidget等)工作正常.
为了获得OpenGL扩展,我随意选择了GLee(它开箱即用,GLew没有).
GLee.h和qgl.h不能很好地协同工作.AFAICT,每个必须包括在另一个之前.
我将预处理检查(确保它首先包含在内)从GLee.h中拉出来,在包含OpenGL头之前插入它使用的预处理指令,然后首先包含qgl.h.在linux上,它归结为:
#define __glext_h_ /* prevent glext.h from being included */
#define __glxext_h_ /* prevent glxext.h from being included */
#define GLX_GLXEXT_PROTOTYPES
#include <qgl.h>
#include "GLee.h" // my hacked version
Run Code Online (Sandbox Code Playgroud)
这构建(不知道我的代码是否真的会运行......这个问题先发制人[即我拖延]),但它似乎是一个可怕的kludge.谷歌搜索已经出现了很多人提出这个基本问题(虽然他们中的大多数人都没有费心找出伪造的编译器错误,所以他们可以看到根本问题),但我还没有看到任何实际的答案.
有没有更好的(更优雅,便携,强大等)的方式来做到这一点?
我有一个带有一些内联模板方法的头文件.我向它添加了一个类声明(只是几个静态方法......它更像是一个命名空间而不是一个类),我开始在使用该新类的文件中得到这个编译错误.
还有其他几个文件包含相同的.h文件,仍可以编译而无需投诉.
谷歌搜索错误给了我一堆链接到邮件列表有关具有类似错误消息的项目上的错误(唯一的区别似乎是构造函数,析构函数或类型转换应该在前面).
我准备开始剥离其他所有东西,直到我有一个简单的最小样本,所以我可以聪明地问这个问题,但我想我会先尝试一下这个愚蠢的方法:
任何人都可以给我一个关于这个错误信息实际意味着什么的基本线索,所以我可以开始跟踪它/ google它?
仅仅为了完整起见,我看到这个的第一个例子看起来或多或少
namespace Utilities
{
template <typename T> GLfloat inline NormalizeHorizontally(T x)
{
GLfloat scaledUp = x*2.0;
GLfloat result = scaledUp / Global::Geometry::ExpectedResolutionX;
return result;
}
}
Run Code Online (Sandbox Code Playgroud)