0
나는 반환 형식자바 JNA C++ 쌍 방법 매핑
std::pair<int, string>
내가 JNA을 사용하고 내가 한 쌍의 구조가 구조 기본 클래스를 사용하여 매핑 할 수있는 방법을 궁금 해서요과 방법을 공개하는 간단한 DLL을 가지고있다. Pair<T,E> extends Structure
과 같은 것을 할 수 있습니까?
감사합니다.
나는 반환 형식자바 JNA C++ 쌍 방법 매핑
std::pair<int, string>
내가 JNA을 사용하고 내가 한 쌍의 구조가 구조 기본 클래스를 사용하여 매핑 할 수있는 방법을 궁금 해서요과 방법을 공개하는 간단한 DLL을 가지고있다. Pair<T,E> extends Structure
과 같은 것을 할 수 있습니까?
감사합니다.
짧은 대답은 아니오입니다. C++ 템플릿을 Java Generics에 매핑 할 수 없습니다. 그들은 비슷하게 보이지만 완전히 다른 것들입니다.
프로세스가 수동이지만 프로세스가 더 길지만 대답은 네일 수 있습니다. 이것이 단일 플랫폼에서 실행될 예정이라면 문제가 될만한 가치가있을 것입니다.
먼저 쌍의 데이터 오프셋을 결정한 다음 페어 데이터 오프셋에 해당하는 오프셋이있는 필드가있는 JNA 구조를 만듭니다.
// C++
typedef std::pair<int,string> mypair;
mypair* p = (mypair *)0;
offset_t PADDING1 = (char*)&p->first - (char*)p;
offset_t PADDING2 = (char*)&p->second - (char *)p;
// Java
class MyPair extends Structure {
public byte[] = byte[PADDING1]; // omit if PADDING1 is zero
public first;
public byte[] = byte[PADDING2]; // omit if PADDING2 is zero
public second;
}
답변 해 주셔서 감사합니다. 나는 다른 접근법으로 끝을 맺었다. 두 필드의 구조체를 만들었고 (C++ 메서드에서 java로 반환) 자바에서는 미러 구조를 만들고 참조 구문을 사용하여 반환 된 구조체에 액세스했습니다. – Radu