2014-12-06 4 views
2

Scilab의 수치 엔진을 사용하여 일부 데이터를 계산해야하는 Qt 애플리케이션을 작성 중입니다. 내 OS는 Scilab v.5.5.0 및 QtCreator v.3.2.1 (Qt 5.3.2)이 설치된 Ubuntu 14.04입니다.Qt 애플리케이션을 call_scilab (Scilab API)를 통해 Scilab과 인터페이스

내가 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/빌드 QTtest-Desktop_Qt_5_3_GCC_32bit - 디버그/QTtest : 나는 qmake를하는 행 다음에 추가하려고 해당 파일이나 디렉토리

: 공유 객체 파일을 열 수 없습니다 : libscicall_scilab.so.5 : 공유 라이브러리를로드하는 동안 오류가 발생했습니다. pro 파일이지만 결과가 없습니다 :

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

라이브러리가 이미 지정된 디렉토리에 있습니다 (수동으로 검사했습니다). 그 전에는 여전히 많은 설정을 시도했는데 성공하지 못했습니다.

누구든지이 문제의 적절한 해결책을 제공 할 수 있습니까? 프로젝트 파일에서이를 사용하도록 LD_LIBRARY_PATH에

답변

1

시도 : 당신은 메이크 파일 (들)을 다시 생성 한 후 qmake를 다시 실행해야합니다

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

. scilab의 32 비트 라이브러리가 있는지 확인하거나 빌드가 64 비트로 변경되어야합니다.

0

에 한번 당신의 lib 디렉토리의 위치를 ​​추가

+0

답장을 보내 주셔서 감사합니다. 나는 : LIBS = -L/usr/lib/scilab -lscicall_scilab 을 내 .pro 파일에 추가 한 다음 QMake를 시작했습니다. LIBS =이 -L는/usr/lib 디렉토리/JNI/libjavasci2.so.5.5.0 을 : 내가 추가 한 경우 그 후 나는, libjavasci2.so.5 매우 흥미로운 무엇 비슷한 메시지를 가지고 scicall_scilab에 다시 문제가 있습니다 ... 설치된 라이브러리가 32 또는 64 비트인지 어떻게 확인할 수 있습니까? – medicaldev

+0

@medicaldev :'LIBS = -L/usr/lib/jni/libjavasci2.so.5.5.0'은 추가하지 않는 LIBS 변수를 오버 라이딩합니다. 이전 값을 보존하려면'= '이 아니라'+ ='를 사용하십시오. 전체 경로를 사용하지 말고 경로와 라이브러리 이름으로 분해하십시오. – lpapp

+0

맞습니다. LIBS + = -L/usr/lib/scilab -lscicall_scilab 및 LIBS + = -L/usr/lib/jni -ljavasci (또는 ljavasci2, no difference)로 변경되었습니다. 이제 메시지는 libjava.so에 관한 것입니다 (두 경우 모두) ... 저는 Linux에서 동적 인 라이브러리에 익숙하지 않습니다. – medicaldev