2013-07-18 5 views
1

저는 Windows 7을 실행 중입니다. Visual Studio C++ 2010을 사용하여 DLL을 빌드했음을 알고 있습니다. 소스 코드가 없으므로 패키지를 만들 때 R에서 온 - 플라이 (NAMESPACE)를 만들 수 없습니다. . 이 단계에서는 패키지을 만들 필요가 없습니다. 단지 dyn.load()을 사용하여 R로 라이브러리를로드하려고합니다. 이후 그것은 모든 클라이언트 프로그램에 이식 할 수 있다고 가정 dll이기 때문에, 나는 그것이 GNU gcc을 사용하여 컴파일되지 않았 음을 알고 있기 때문에 확실하게 알 수 있습니다.R에서 타사 .dll을로드 할 수 있습니까?

편집 : 내가 DLL이 배포하는 모든 기능을 호출 할

.

+1

DLL에 대해 알지 못합니다. 나는 R이'R_init_mylib'라는 심볼을 찾았 기 때문에'dyn.load'가 여기서 작동하는지 확신하지 못했습니다 ... 솔직히이 질문을하기 전에 당신이 무엇을 시도했는지 보지 못합니다. – agstudy

+0

함수를 호출하고 싶습니까, 아니면 DLL 만로드 하시겠습니까? –

+0

나는 함수의 입력과 출력으로 SEXP를 가지고 있다는 것을 알고 있으므로, .Call을 사용하여 .dll을로드 한 후에 함수를 호출 할 수있다. .C를 사용하는 하나의 버전이 있으며 네이티브 C 유형을 출력 포인터와 함께 전달합니다. – MSardelich

답변

2

예, R은 dyn.load을 사용하여로드 할 수 있습니다. 그러나 실제로 내보내는 함수를 실제로 호출 할 수도 있고 그렇지 않을 수도 있습니다. 함수의 인수가 R이 처리 할 수있는 것과 일치하지 않으면, 사용할 수 없습니다. 이 경우 DLL과 R 사이의 변환 계층 역할을하는 래퍼 DLL을 작성할 수 있습니다.

+0

dll은 SEXP 입력 및 출력 매개 변수를 사용합니다 ...이 경우 CMD R SHLIB 또는 GNU 컴파일러를 사용하여 컴파일 및 링크하지 않은 경우에도이 함수에 액세스 할 수 있습니까? – MSardelich

관련 문제