2014-11-11 1 views
0

필자는 java 코드에서 dll 파일 (C 코드)을 사용해야하는데,이를 위해 할당 된 파일을 검색하여 JNA가 가장 적합한 방법이라는 것을 알았습니다. 따라서 jna-4.1.0.jar을 사용하여 HelloWorld 프로그램을 작성하려고합니다. 다음은 C 코드 :JNA를 사용하여 Java 코드에서 dll 파일을 사용하는 방법은 무엇입니까?

//C hello world example 
#include <stdio.h> 

void __declspec(dllexport) _stdcall helloFromC() 
{ 
    printf("Hello world from the c code! \n"); 
} 

내가 cmd를에서 다음 명령을 사용하여이 C 코드 DLL을합니다

gcc -c ctest.c 
gcc -shared -0 test.dll ctest.o 

이 명령을 실행 나에게 C 코드를위한 DLL을, 제공하는 I 내 간단한 자바 프로젝트의 루트에 놓으십시오.

지금 여기 내 자바 클래스입니다 : 나는 일식에 자바 프로그램을 실행하면 이제

import com.sun.jna.Native; 
import com.sun.jna.Library; 

public class HelloWorld { 

public interface CTest extends Library { 
    void helloFromC(); 
} 

public static void main(String[] args) { 
     CTest INSTANCE = (CTest) Native.loadLibrary("ctest", CTest.class); 

     INSTANCE.helloFromC(); 
    } 
} 

,이 오류가 점점 오전 : 그것으로이 문제를 해결하기 위해 친절

Exception in thread "main" java.lang.UnsatisfiedLinkError: %1 is not a valid Win32 application. 

도와를 이미 많은 시간을 보냈습니다!

+0

아니요, jna-4.1.0.jar을 사용하는 JNA를 의미합니다. – Amir

+0

어떤 플랫폼/OS를 사용합니까? dll을 만들고 자바를 실행하려면? –

+0

그것은 Windows 8.1 (64 비트)이고 Java 용 이클립스를 사용합니다 – Amir

답변

1
gcc -c ctest.c 
gcc -shared -o test.dll ctest.o 
try  'o'^not '0' 

그것은 당신의 dll을 찾고 있지만 그것을 좋아하지 않아.

+0

예 이미 o (0이 아님)를 입력하고 있는데 왜 내 dll을 수락하지 않습니까? : – Amir

+0

확실히 윈도우가로드 할 수없는 것처럼 들리네요. 다른 64 컴파일러를 설치하고 시도해보십시오. – Neikon

+0

넷빈즈 64 비트를 설치해야합니까? – Amir

관련 문제