2014-12-06 74 views
2

我正在研究Qt应用程序,它必须使用Scilab的数字引擎来计算一些数据。我的操作系统是Ubuntu 14.04,安装了Scilab v.5.5.0和QtCreator v.3.2.1(Qt 5.3.2)。通过call_scilab(Scilab API)与Scilab连接Qt应用程序

我使用SCILAB帮助提供了一个简单的代码示例:

/****** INITIALIZATION **********/ 
#ifdef _MSC_VER 
if (StartScilab(NULL,NULL,NULL) == FALSE) 
#else 
if (StartScilab(getenv("SCI"),NULL,NULL) == FALSE) 
#endif 
    { 
    fprintf(stderr,"Error while calling StartScilab\n"); 

    } 

/****** ACTUAL Scilab TASKS *******/ 

SendScilabJob("myMatrix=['sample','for the help']"); 
SendScilabJob("disp(myMatrix);"); // Will display !sample for the help ! 
SendScilabJob("disp([2,3]+[-44,39]);"); // Will display - 42. 42. 

/****** TERMINATION **********/ 
if (TerminateScilab(NULL) == FALSE) { 
    fprintf(stderr,"Error while calling TerminateScilab\n"); 

} 

我的问题是,点击“运行”后,我得到一个警告如下:

/家庭/中/ Dokumenty/QTWorkspace/build-QTtest-Desktop_Qt_5_3_GCC_32bit-Debug/QTtest:加载共享库时出错:libscicall_scilab.so.5:无法打开共享目标文件:没有这样的文件或目录

我试图将以下行添加到qmake。 pro文件,但没有任何结果:

LIBS += /usr/lib/scilab/libscicall_scilab.so.5 

库已经在指定的目录(我已经手动检查过)。在此之前,我尝试了很多其他设置 - 仍然没有成功。

任何人都可以提供这个问题的妥善解决方案吗?

回答

1

尝试加入您的LIB的位置到LD_LIBRARY_PATH

0

尝试在您的项目文件中使用这样的:

LIBS = -L/usr/lib/scilab -lscicall_scilab 

您将需要重新运行qmake随后重新生成Makefile文件(S)。确保你有32位的scilab库,或者将这个版本改为64位。

+0

谢谢你的回答。我添加了: LIBS = -L/usr/lib/scilab -lscicall_scilab 我的.pro文件,然后启动QMake。从那以后,我已经得到了libjavasci2.so.5 什么是很有趣的类似的消息,当我说: LIBS = -L/usr/lib目录/ JNI/libjavasci2.so.5.5.0 有再次是scicall_scilab的问题...我如何检查我的库是否安装了32位或64位? – medicaldev 2014-12-07 11:20:33

+0

@medicaldev:'LIBS = -L/usr/lib/jni/libjavasci2.so.5.5.0'正在重写LIBS变量,因为它没有附加。如果您想保留以前的值,请使用'+ =',而不是'='。请停止使用完整路径并将它们反汇编为路径和库名称。 – lpapp 2014-12-07 11:22:05

+0

对,我已经更改为:LIBS + = -L/usr/lib/scilab -lscicall_scilab和LIBS + = -L/usr/lib/jni -ljavasci(或ljavasci2,没有区别)。现在这个消息是关于libjava.so的(在这两种情况下)......我不熟悉Linux下的动态库。 – medicaldev 2014-12-07 11:34:49