Я новичок в этом SWIG и взаимодействии между Java и C ++.Я пытаюсь использовать библиотеку pjsip, обернутую с Java.
У меня есть следующая структура в файле с именем "call.hpp":
/**
* This structure contains parameters for Call::onCreateMediaTransportSrtp()
* callback.
*/
struct OnCreateMediaTransportSrtpParam
{
/**
* The media index in the SDP for which the SRTP media transport
* will be used.
*/
unsigned mediaIdx;
/**
* Specify whether secure media transport should be used. Application
* can modify this only for initial INVITE.
* Valid values are PJMEDIA_SRTP_DISABLED, PJMEDIA_SRTP_OPTIONAL, and
* PJMEDIA_SRTP_MANDATORY.
*/
pjmedia_srtp_use srtpUse;
/**
* Application can modify this to specify the cryptos and keys
* which are going to be used.
*/
vector<SrtpCrypto> cryptos;
};
теперь, вот как оболочка Java для этогофункция выглядит следующим образом (я опустил некоторые методы получения и установки для уменьшения длины):
package org.pjsip.pjsua2;
public class OnCreateMediaTransportSrtpParam {
private transient long swigCPtr;
protected transient boolean swigCMemOwn;
protected OnCreateMediaTransportSrtpParam(long cPtr, boolean cMemoryOwn) {
swigCMemOwn = cMemoryOwn;
swigCPtr = cPtr;
}
protected static long getCPtr(OnCreateMediaTransportSrtpParam obj) {
return (obj == null) ? 0 : obj.swigCPtr;
}
protected void finalize() {
delete();
}
public synchronized void delete() {
if (swigCPtr != 0) {
if (swigCMemOwn) {
swigCMemOwn = false;
pjsua2JNI.delete_OnCreateMediaTransportSrtpParam(swigCPtr);
}
swigCPtr = 0;
}
}
public void setCryptos(SWIGTYPE_p_vectorT_pj__SrtpCrypto_t value) {
pjsua2JNI.OnCreateMediaTransportSrtpParam_cryptos_set(swigCPtr, this, SWIGTYPE_p_vectorT_pj__SrtpCrypto_t.getCPtr(value));
}
public SWIGTYPE_p_vectorT_pj__SrtpCrypto_t getCryptos() {
long cPtr = pjsua2JNI.OnCreateMediaTransportSrtpParam_cryptos_get(swigCPtr, this);
return (cPtr == 0) ? null : new SWIGTYPE_p_vectorT_pj__SrtpCrypto_t(cPtr, false);
}
public OnCreateMediaTransportSrtpParam() {
this(pjsua2JNI.new_OnCreateMediaTransportSrtpParam(), true);
}
}
Теперь я не знаю, как использовать setCryptos с типом SWIGTYPE_p_vectorT_pj__SrtpCrypto_t в параметре.я пробую следующее:
SrtpCrypto crypto = new SrtpCrypto();
crypto.setName("AES_CM_128_HMAC_SHA1_80");
OnCreateMediaTransportSrtpParam prm = new OnCreateMediaTransportSrtpParam();
Vector<SrtpCrypto> cryptos = new Vector<SrtpCrypto>();
cryptos.add(crypto);
prm.setCryptos(cryptos);
но я получаю следующую ошибку:
error: incompatible types: Vector<SrtpCrypto> cannot be converted to SWIGTYPE_p_vectorT_pj_SrtpCrypto_t
какие-либо идеи о том, как действовать?Большое спасибо !!!