내 R 패키지에 포함하려는 컴파일 된 C 라이브러리 (lib.dll)가 있으므로 패키지는 .Call을 통해 lib.dll의 기능에 액세스 할 수 있습니다. 패키지에 다른 C 소스 코드가 없으며 패키지와 함께 lib.dll의 소스 코드를 빌드하는 것이 옵션이 아닙니다.컴파일 된 공유 C 라이브러리를 R 패키지에 포함하고 R 래퍼 함수에서 함수를 호출하는 경우
내 패키지에 lib.dll을 포함시키는 표준 방법은 무엇입니까? 필자는 CRAN에 패키지를 제출할 계획이 없으므로 컴파일 된 코드에 대한 CRAN의 규칙은 그다지 중요하지 않지만 결국 다른 온라인 소스에서 패키지를 사용할 수있게하려는 것이므로 항상 다음과 같이 수동으로 dll을 추가하십시오 패키지 설치가 최적이 아닙니다. 이 일을하는 "정상적인"방법이있는 것처럼 느껴지지만 작동시키지 못합니다.
나는 SOFAR 시도하는 것 :
는 src 폴더에 DLL을 넣어 네임 스페이스 파일에 useDynLib (LIB)를 추가하지만,이 패키지의 건물 중에 문제가 발생
더 나은 해결책이 없기 때문에 이미 빌드 된 패키지에 dll을 추가하고 library.dynam()를 사용하여 DLL을 동적으로로드하는 .onLoad 및 .onAttach 함수 (zzz.R)를 포함 시켰습니다. 이것은 처음에는 작동하는 것처럼 보였고 pakcage를로드 한 후에 .Call()을 사용하여 lib.dll의 함수에 직접 액세스 할 수 있었지만 R 래퍼 함수를 통해 액세스하려고하면 dll의 함수가 네임 스페이스에 없다고 들었습니다. ; 내 이해의 경우 사람에 패키지
"패키지와 함께 lib.dll의 소스 코드 빌드가 옵션이 아닙니다."- Curious. 이유를 설명하는 마음? 그럴 경우이 (부정적으로) 배포 가능성에 영향을 미치기 때문입니다. –