2009-12-17 3 views
0

FAR PASCAL 호출 규칙을 사용하는 것처럼 보이는 사용자 정의 DLL에 JNA를 사용하여 액세스하고 있지만 액세스하려고 할 때마다 JVM이 충돌합니다.FAR PASCAL 사용자 정의 dll로 jna 사용

dll 개발 가이드의 말 : BOOL FAR PASCAL GetIomemVersion (LPSTR);

그리고 종속성 워커는 저에게 말한다 : _GetIomemVersion C# 코드와

public class PebblePrinter { 
    public interface Iomem extends StdCallLibrary { 
     boolean _GetIomemVersion(String version); 
    }  

    String version; 
    Iomem INSTANCE; 
    StdCallFunctionMapper myMapper; 

    public PebblePrinter() { 
     HashMap optionMap = new HashMap(); 
     myMapper = new StdCallFunctionMapper(); 
     optionMap.put(Library.OPTION_FUNCTION_MAPPER, myMapper); 
     INSTANCE = (Iomem)Native.loadLibrary("iomem", Iomem.class,optionMap); 
    } 
    public String getIomemVersion(){ 
     INSTANCE._GetIomemVersion(version); 
     return version; 
    } 
} 

4 @ 그것을 잘 내가 뭘 잘못 말해 줄 수

[DllImport("iomem.dll", EntryPoint = "[email protected]")] 
public static extern bool GetIomemVersion(IntPtr version); 

을 사용하여 작동? 미리 감사드립니다 !!!

답변

0

문제 해결, 난 그냥 잘못된 매개 변수를 사용했습니다

.. GetIomemVersion는 포인터

boolean _GetIomemVersion(Pointer version); 


public String getIomemVersion(){  
    Memory m = new Memory(1024); 
    Pointer x = m.getPointer(0); 
    INSTANCE._GetIomemVersion(x); 
    return x.getString(0); 
} 
필요
관련 문제