그래서이 "음"기능이 작동하지만, 내가 명명 된 파이프 기능 중 하나를 시도 할 때 반환이 :자바 JNA는의 Kernal32에서 명명 된 파이프 기능을 찾을 수 없습니다
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'WaitNamedPipe': The specified procedure could not be found.
import java.nio.charset.StandardCharsets;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
/**
* @author
*
*/
public class NamedPipeNativeFunctions {
/*
* Public Declare Function CallNamedPipe Lib "kernel32" Alias
* "CallNamedPipeA" (ByVal lpNamedPipeName As String, lpInBuffer As Any,
* ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As
* Long, lpBytesRead As Long, ByVal nTimeOut As Long) As Long
*
*/
public interface Kernel32 extends Library {
public long CallNamedPipe (String lpNamedPipeName,long lpInBuffer ,long nInBufferSize, Pointer lpOutBuffer,long nOutBufferSize, Pointer lpBytesRead, long nTimeOut);
public boolean WaitNamedPipe(String lpNamedPipeName,
int nTimeOut);
public boolean Beep(int FREQUENCY, int DURATION);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
myClass myclass = new myClass() ;
myClass myclass2 = new myClass() ;
Pointer lpOutBuffer = myclass.getPointer() ;
Pointer lpBytesRead =myclass2.getPointer() ;
Kernel32 lib = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);
//lib.CallNamedPipe("1234TestPipe", 255, 255, lpOutBuffer , 255, lpBytesRead , 5000);
lib.Beep(698, 500); // works
boolean sucess = lib.WaitNamedPipe("hgf" ,(int) 5000); // does not work
}
}
호출자가 ANSII 또는 UNICODE를 각각 사용하는 경우 'WaitNamedPipe'는 #define이고 WaitNamedPipeA 또는 WaitNamedPipeW입니다. 원본 (유니 코드 및 ANSI 이름 섹션 참조) : https://msdn.microsoft.com/en-us/library/windows/desktop/aa365800(v=vs.85).aspx –
이 태그가 C++ 인 이유는 무엇입니까? 나는 어떤 관계도 여기에서 보지 않는다. –
@RichardCritten : 귀하의 의견은 내 문제를 해결합니다. 귀하의 의견에 답할 수 있도록 변환하겠습니까? – sino