2017-10-29 16 views
0

PureData는 소리 합성을위한 프로그래밍 언어입니다. LibPD는 래퍼 그래서 우리는 자바/C#을/안드로이드 등 여기에 패치를 사용할 수있는 GitHub의 페이지를 포함입니다 : https://github.com/libpd/libpd 이제Java에서 사용하기 위해 libpd를 설치하는 방법은 무엇입니까?

자바 LibPD을 사용하여, 나는에 자사의 라이브러리를 가져와야합니다 먼저 생각 내 프로젝트는 클래스와 메소드를 사용하여 패치를 호출하고 조정할 수 있습니다. 문제는 프로젝트에 추가 할 jar 파일을 찾을 수 없습니다. jar 파일이 생성되도록 "빌드"해야합니까?

누군가 나에게 절차를 설명해 주시면 감사하겠습니다.
감사

업데이트 1 [2017년 1월 11일] : 윈도우 7/64 비트에서 내가 MinGW을 사용하고 (:
@의 umläute의 게시물을 따른 후, 나는 다음과 같은 오류를 받고 있어요 및 make에 대한 MinGW-make)

C:\Users\Name\Documents\GitHub>cd libpd 

C:\Users\Name\Documents\GitHub\libpd>git submodule init 

C:\Users\Name\Documents\GitHub\libpd>git submodule update 

C:\Users\Name\Documents\GitHub\libpd>make javalib 
'make' is not recognized as an internal or external command, 
operable program or batch file. 

C:\Users\Name\Documents\GitHub\libpd>mingw32-make javalib 
process_begin: CreateProcess(NULL, uname, ...) failed. 
'sed' is not recognized as an internal or external command, 
operable program or batch file. 
'sed' is not recognized as an internal or external command, 
operable program or batch file. 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_arithmetic.o pure-data/src/d_arithmetic.c 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_array.o pure-data/src/d_array.c 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_ctl.o pure-data/src/d_ctl.c 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_dac.o pure-data/src/d_dac.c 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_delay.o pure-data/src/d_delay.c 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_fft.o pure-data/src/d_fft.c 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_fft_fftsg.o pure-data/src/d_fft_fftsg.c 
pure-data/src/d_fft_fftsg.c: In function 'mayer_dofft': 
pure-data/src/d_fft_fftsg.c:88:11: warning: incompatible implicit declaration of built-in function 'alloca' [enabled by 
default] 
    buf = alloca(n * (2 * sizeof(FFTFLT))); 
     ^
pure-data/src/d_fft_fftsg.c: In function 'mayer_realfft': 
pure-data/src/d_fft_fftsg.c:121:11: warning: incompatible implicit declaration of built-in function 'alloca' [enabled by 
default] 
    buf = alloca(n * sizeof(FFTFLT)); 
     ^
pure-data/src/d_fft_fftsg.c: In function 'mayer_realifft': 
pure-data/src/d_fft_fftsg.c:139:11: warning: incompatible implicit declaration of built-in function 'alloca' [enabled by 
default] 
    buf = alloca(n * sizeof(FFTFLT)); 
     ^
pure-data/src/d_fft_fftsg.c: In function 'pd_fft': 
pure-data/src/d_fft_fftsg.c:156:30: warning: incompatible implicit declaration of built-in function 'alloca' [enabled by 
default] 
    FFTFLT *buf2 = (FFTFLT *)alloca(2 * npoints * sizeof(FFTFLT)), *bp2; 
          ^
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_filter.o pure-data/src/d_filter.c 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_global.o pure-data/src/d_global.c 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_math.o pure-data/src/d_math.c 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_osc.o pure-data/src/d_osc.c 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_resample.o pure-data/src/d_resample.c 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o pure-data/src/d_soundfile.o pure-data/src/d_soundfile.c 
pure-data/src/d_soundfile.c:17:21: fatal error: pthread.h: No such file or directory 
#include <pthread.h> 
        ^
compilation terminated. 
<builtin>: recipe for target 'pure-data/src/d_soundfile.o' failed 
mingw32-make: *** [pure-data/src/d_soundfile.o] Error 1 

업데이트 2 2017년 1월 11일] : 나는 MSYS2, mingw32 및 0,123,889을 설치 한
make (@milleniumbug 덕분에). mingw64make에 대한 디렉토리를 PATH에 추가했습니다.

C:\Users\Name\Documents\GitHub\libpd>make javalib 
gcc -DPD -DHAVE_UNISTD_H -DUSEAPI_DUMMY -I./pure-data/src -I./libpd_wrapper -I./libpd_wrapper/util -DWINVER=0x502 -DWIN 
32 -D_WIN32 -DPD_INTERNAL -I"C:\Program Files\Java\jdk1.8.0_45/include" -I"C:\Program Files\Java\jdk1.8.0_45/include/win 
32" -O3 -c -o jni/z_jni_plain.o jni/z_jni_plain.c 
In file included from jni/z_jni_shared.c:8:0, 
       from jni/z_jni_plain.c:8: 
jni/z_jni.h:2:10: fatal error: jni.h: No such file or directory 
#include <jni.h> 
      ^~~~~~~ 

업데이트 3 2017년 4월 11일] : 고정jni.h 문제 내가 make javalib을 수행 할 때 지금 나는이 오류가 발생합니다. 내 PATH가 업데이트 된 JDK 대신 기존 JDK를 가리켰습니다. 지금이 오류 받고 있어요 :

C:/msys32/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: Cannot export libpd 
_set_concatenated_printhook: symbol not found 
C:/msys32/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: i386 architecture o 
f input file `libpd_wrapper/util/z_print_util.o' is incompatible with i386:x86-64 output 
libpd_wrapper/util/z_print_util.o:z_print_util.c:(.text+0x3a): undefined reference to `_strlen' 
libpd_wrapper/util/z_print_util.o:z_print_util.c:(.text+0x75): undefined reference to `_strncat' 
libpd_wrapper/util/z_print_util.o:z_print_util.c:(.text+0xad): undefined reference to `_strncat' 
collect2.exe: error: ld returned 1 exit status 
make: *** [Makefile:163: java-build/org/puredata/core/natives/windows/x86_64//pdnative.dll] Error 1 

32 비트는 MinGW gcc가 ... 여전히 같은 오류를 테스트 ...

업데이트 4를 2017년 6월 11일] :
문제를 해결했습니다.
문제를 해결해 준 것 같습니다. 여기에 내가 일반적으로 한 것입니다 :
1 우선 설치 한 msys2하고 철저한 그것은, MinGW32MinGW64make
참고 : 오래된 원래 사이트에서 가지고있는 경우에mingw32를 제거합니다. 더 이상 업데이트되지 않으며 종속성 문제가 발생할 수 있습니다.
2 MinGW32를 사용하도록 PATH가 변경되었습니다 (따라서는 32 비트 버전을보고해야 함)
3- 변경된 JAVA_HOME이 (가) 업데이트 된 jdk 디렉토리로 변경되었습니다. 그것은 업데이 트 자바가 자동으로 env를 업데이 트하지 않는 것 같습니다. 변수 (이 경우 jni header not found 문제가 해결됨).
3-


7- make clean javalib

나는이 사람

답변

1

libpd Github project 도움이되기를 바랍니다 git를 설치하고 (저장소의 추가 정보 지침에 따라) git 명령을 통해 libpd를 얻을 수 (다른 소스 코드와 마찬가지로 리포지토리) 소스 ibpd (미리 빌드 된 바이너리가 아닌).

README

To download libpd & checkout the pure-data submodule do the following:

git clone https://github.com/libpd/libpd.git 
cd libpd 
git submodule init 
git submodule update 

에서

하고 건물에 대해 계속 :

Currently the main Makefile builds a dynamic lib on Windows (in MinGW), Linux, & Mac OSX and has the following targets:

  • libpd : (default) builds if no target is specified, builds the libpd.so/dylib/dll
  • [...]
  • javalib : builds libpdnative and the jni wrapper
  • clean : removes the object files

그래서 순서대로 만들 수있는 당신의 libs/libpd.jar 간단하게 수행

make javalib 
+0

Vielen 축축한합니다. 나는 당신의 단계 ('make '대신'mingw32-make'를 사용)를 따라 왔지만 오류가있었습니다. 오류를 보여주는 내 게시물을 업데이트했습니다. –

+0

질문이 변경되면 질문을 업데이트하지 마십시오. 대신 새 것을 시작하십시오. 주어진 소프트웨어로 버그를 발견했다면, 대신 자신의 bugtracker에 티켓을 만들어야합니다. (그 외에는 libpd의 JNI를 컴파일하기 위해 JNI-headers가 필요합니다 ...) –

+0

그러나'jni.h'는 이미'gcc'의 -I 스위치에 있습니다 (코드 3 행 내 업데이트 2). 내'make javalib'에 다른 스위치를 추가해야합니까? –