2013-04-02 1 views
0

Java 사용자 인터페이스를 넣으려는 이전에 작성된 C++ 코드가 있습니다. 이 C++ 코드는 일부 사용자 정의 데이터 유형을 입력으로 요구하는 동일한 알고리즘을 실행하고 동일한 사용자 정의 인수에 출력을 전달합니다. 두 가지 특성을 가진 JNA (Java Native Access)로 작성된 샘플 코드가 필요합니다. 먼저 여러 DLL을 여러 이름으로 호출하고 둘째로 입력 및 출력 인수를 전달합니다. 누군가 나를 도울 수 있습니까?여러 인수와 3 개의 함수를 사용하여 Java에서 C++ 호출

+0

사실 꽤 쉽습니다. 너무 나쁜 당신은 가치가 있도록 현상금을 설정할 수있는 방법이 없습니다. 레퍼런스를 한번 봤어? 그것은 꽤 똑 바른 앞으로입니다. 또한 * JNI * (Java Native * Interface *)에 대해 이야기하고 있다고 생각합니다. – ChiefTwoPencils

+0

JNI에서 이러한 함수를 호출하는 데 많은 시간을 할애하지만 실제로는 문제가있어이를 수행 할 수 없습니다. 내가 사용할 수있는 예제가 있습니까? – Maryam

+0

같은 질문을 여러 번 물어 보는 것은 좋지 않습니다. – Java42

답변

0

다음은 시작하는 데 도움이되는 지침 예제입니다. 이 스 니펫에서 Java2Win64는 실행할 원시 코드가 포함 된 DLL입니다. 함수 functionMaryam()은 1 param을 int로 취해 int를 반환합니다. 모든 데이터 유형에 쉽게 확장 할 수 있습니다.

public class JnaExampleMaryam { 

// ------------------------------------------ 
// Java2Win.class 
// ------------------------------------------ 
public interface Java2Win extends Library { 
    Java2Win call = (Java2Win) Native.loadLibrary("Java2Win64", Java2Win.class); 

    int functionMaryam(int i); 
} 

// ------------------------------------------ 

// ------------------------------------------ 
// Test 
// ------------------------------------------ 
public static void main(final String args[]) throws Exception { 
    final File file = new File("rootToDLL", "Java2Win64.dll"); 
    LibraryLoader.loadLibrary(file); 

    int result = Java2Win.call.functionMaryam(42); 

} 
// ------------------------------------------ 
} 
+0

내 함수는 다음과 같이 정의됩니다. 'extern "C"void 파스칼 내보내기 RCS (stAct * act, stResourceDirectory * resDir, stCalendar * 달력, 짧은 numOfAct, 짧은 numOfRes, 짧은 numOfCal, int nDataDate) 이 방법으로 호출하는 것이 효과가 있다고 생각하십니까? 'RCS (stAct * act, stResourceDirectory * redDir, ...);' – Maryam

+0

@Maryam - "Pascal 호출 규칙을 사용하는 메소드에 JNA 라이브러리 인터페이스를 정의하려면 어떻게합니까?"라는 새로운 질문을 만드십시오. – Java42