What's 는 가장 쉬운 방법을 사용하는 C 소스 코드에서 Java 응용 프로그램?

StackOverflow https://stackoverflow.com/questions/83299

  •  01-07-2019
  •  | 
  •  

문제

나는 이것이 오픈 소스 라이브러리 사용하고 싶 내에서 옵션을 선택해야 합니다.라이브러리,서로 개발되었에서 Unix/Linux,내 프로그램이 실행되는 응용 프로그램을 시작합니다.그것은 라이브러리의 대부분 수학적 기능,그렇게까지 말할 수 있는 사용하지 않는 아무것도의 플랫폼에 종속,그것은 단지 아주 기본적인 C 코드입니다.또한,그것은 크고,보다 적은 5,000 라인입니다.

What's 는 가장 쉬운 방법은 라이브러리를 사용할 수 있습니다 내 응용 프로그램에서?내가 알고 있 JNI 지만,포함하는를 찾는 컴파일러를 컴파일하는 라이브러리 윈도우에서 점점 그대로--날짜와 JNI 프레임워크의 코드 작성,등등.행할 수 있지만,그렇게 쉬운 것이 아닙니다.이 있는 쉬운 방법이 있을까?을 고려하면 작은 크기의 도서관,나는 유혹을 번역하 Java.이 있는 도구가 도움이 될 수 있습니까?


편집

나는 번역의 일부는 라이브러리가 필요한 Java.그것은 대략 10%에서 라이브러리의 지금까지,하지만 그것은 아마도 시간이 증가합니다.C Java 은 매우 유사하다,그래서 그것은 단지 몇 시간이 걸렸다.주요 어려움이 고정된 버그를 얻을 도입하여 실수로서 번역이 있습니다.

해주신 모든 분들께 감사드립니다.제안된 솔루션에는 모든 재미있는 듯하고 나로 볼 때 나는 그들을 링크하는 더 큰 라이브러리입니다.을 위한 작은 조각의 C 코드,매뉴얼 번역되었는 가장 간단한 솔루션입니다.

도움이 되었습니까?

해결책

당신의 최선의 방법은 아마를 잡는 좋은 c 록(K&R:C Progranmming 어)차 한 잔과 번역을 시작합니다!나는 것에 대해 회의적인 신뢰 프로그램 번역,서 더 자주하지 않고 최고의 번역되었습니다.이렇게 하면 하나는,다음의 수행하고 당신이 필요하지 않을니다.이 있는 경우에는 합병증이 발생 라이브러리의 오픈 소스에 체크인하셔야 합니다 라이센스에 대해 신중하게 이다.고려해야 할 또 다른 점은 거기에는 항상 어떤 요소의 위험과 잠재적인 오류가에서 번역,따라서 그것은 수를 고려할 필요가 작성하는지 확인하는 테스트는 번역이 올바른 것입니다.

은 없 JAVA equivelent 수학의 기능은 무엇입니까?

당신은 당신 자신으로 주석 JNI 방법이 가능한 c 컴파일러를 사용하'Bloodshead 개발-c++작동 할 수 있지만,그것은 많은 노력에 대한~5000 라인입니다.

다른 팁

Java 를 사용하는 일반적인 라이브러리 프로젝트 사용 를 생성하 JNI 랩퍼 클래스 주변 C 라이브러리입니다.훌륭한 도구,그리고 생성할 수 있습니다 랩퍼 코드에 여러 언어를 포함됩니다.매우 좋습니다.

나는 그것을 컴파일하고 사용 JNA.

JNA(Java 기본 액세스)는 기본적으로 런타임이 무엇 JNI 컴파일때 사용하기 위해 사용됩니 어떤 비 java 코드(별 java either).

I don't know about 의 성능 또는 사용자 귀하의 경우에는 그러나 나는 그것을 시도를 제공합니다.

Are you sure you want 사용하는 C 라이브러리는 경우에도,그것은 작은?

한 64 비트가 조금 더 일반적인해야 합 구축을 시작/배포를 32 비트와 64 비트 버전의 라이브러리뿐만 아니라.에 따라 C 코드는 다음과 같,하지 않을 수도 있습니다 필요한 코드를 업데이트를 구축으로는 64 비트입니다.

는 경우에는 C 라이브러리,간단하는 것이 더 쉽습니다 단지 포트는 C 라이브러리를 순수한 자바고 처리하지 않으로 구축/배포 JNI 라이브러리는 C 라이브러리와 자바 코드입니다.

음,AMPC.그것은 C 컴파일러를 위한 윈도우,맥 os X 와 리눅스,컴파일할 수 있는 C 코드로 Java 바이트 코드(코드의 종류,에서 실행되는 Java 가상 머신).

AMPC

그러나,그것은 상업적 및 비용$199 당 라이센스입니다.내가 심는 지불을 위해 당신)모르겠의 모든 자유의 컴파일러와 같습니다.

새로운 Java 와 C 은 매우 비슷합니다.당신은 아마 리팩터링 C 코드를 자바(구조체를 교체할 수 있으로 객체를 인스턴스 공 변수)그리고 포인터 작업을 수 있습니다 일반적으로 번역하는 다른 무언가(배열 작업에 대한 예).하지만 난 당신이 가고 싶지 않을 통해 5,000 라인의 코드,그렇지?

사용 JNI 코드 플랫폼에 종속,그러나 만약 당신이 말한 그것은 독립적인 플랫폼 C,거기에 아무 이유 없이 귀하의 자바 코드 플랫폼에 따라 다릅니다.새로운 방법에 따라 비용이 많이 드는 이러한 계산을 사용하여,JNI 수도 있습니다 실제로 구입하의 성능을 얻으면 그것을 원한 숫자 처리에 이르기까지 처리량,C 할 수 있는 여전히 이길에서 Java 속도입니다.그러나 JNI 를 호출은 매우 비용이 많이 드는 경우,계산은 아주 간단한 빠른 계산,JNI 체 걸릴 수 있습니다 똑같이 오래(또는 그 이상)보다는 계산이 수행되고,어떤 경우에 사용하는 사용자를 살 것이 당신에게 아무것도 하지만 응용 프로그램이 느려고 일으키는 메모리 오버헤드가 발생합니다.

실제로,JNA 인상적 필요보다 적은 노력을 사용하여 직접 JNI.하지만 어떤 경우에 당신을 잃 플랫폼 독립성,그리고 그 이후 당신은 아마만을 사용하여 그것의 작은 부분을 고려할 수 있습 번역 당신이 실제로 필요합니다.

당신은 시도를 사용:

System.loadLibrary("mylibrary.dll");

가 확실하지 않으면 이것은 작업으로 순수하는 C 라이브러리이지만 그것은 아마도 가치가 있습니다.:)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top