首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在linux中加载库MediaInfo

无法在linux中加载库MediaInfo
EN

Stack Overflow用户
提问于 2013-01-12 15:54:10
回答 3查看 3.6K关注 0票数 1

我正在做一个java项目,其中我使用了mediainfo库。我的带有midiainfo.dll的JNA代码在windows中运行得很好,但当我在linux中运行我的代码时,它不能工作,并给出以下异常-

代码语言:javascript
复制
java.lang.UnsatisfiedLinkError: Unable to load library 'MediaInfo': libMediaInfo.so: cannot open shared object file: No such file or directory

我把我的jave代码写成这样-

代码语言:javascript
复制
interface MediaInfoDLL_Internal extends Library
{

    MediaInfoDLL_Internal INSTANCE = (MediaInfoDLL_Internal) Native.loadLibrary("MediaInfo", MediaInfoDLL_Internal.class, singletonMap(OPTION_FUNCTION_MAPPER, new FunctionMapper()
        {

            public String getFunctionName(NativeLibrary lib, Method method)
            {
                // MediaInfo_New(), MediaInfo_Open() ...
                return "MediaInfo_" + method.getName();
            }
        }
    ));


    //Constructor/Destructor
    Pointer New();
    void Delete(Pointer Handle);

    //File
    int Open(Pointer Handle, WString file);
    void Close(Pointer Handle);

    //Infos
    WString Inform(Pointer Handle);
    WString Get(Pointer Handle, int StreamKind, int StreamNumber, WString parameter, int infoKind, int searchKind);
    WString GetI(Pointer Handle, int StreamKind, int StreamNumber, int parameterIndex, int infoKind);
    int     Count_Get(Pointer Handle, int StreamKind, int StreamNumber);

    //Options
    WString Option(Pointer Handle, WString option, WString value);
}

只需在类路径中添加mediainfo.dll,这就像魔术一样工作,但在linux中,我尝试添加libmediainfo.so.0、libmediainfo.so.0.0.0、libzen.so.0和libzen.so.0.0.0,但没有成功……

有人知道如何在linux中运行mediainfo+java吗?

我使用的是Java6、CentOS 5.6最终版和最新的mediainfo版本。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-12 16:05:20

我通过创建symlink解决了我的问题

我使用了来自超级用户的以下命令

$ sudo ln -s /usr/lib/libmediainfo.so.0 /usr/lib/libMediaInfo.so

$ sudo ln -s /usr/lib/libzen.so.0 /usr/lib/libzen.so

票数 1
EN

Stack Overflow用户

发布于 2013-01-12 16:41:47

nix上的文件名区分大小写,因此如果您的库名为libmediainfo.so,则需要更改

代码语言:javascript
复制
Native.loadLibrary("MediaInfo",....

代码语言:javascript
复制
Native.loadLibrary("mediainfo",
票数 1
EN

Stack Overflow用户

发布于 2013-01-12 18:24:00

1)确保文件名为"libMediaInfo.so“(区分大小写!);它可以是指向实际版本的符号链接,很多库都是这样设置的。2)确保这个文件位于*nix上的LD_LIBRARY_PATH中3)在代码中设置为小写可能会使它更简洁,但这是一个风格问题-重要的是代码中的库名称必须与系统上的文件名称相对应,包括大小写

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14291453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档