Unable to join session with Zoom Video SDK for Linux

I am trying to create/join a session with Zoom Video SDK for linux but I am running into unexpected behaviours.

First, creating the SDK object and initializing it succeeds, I get no errors.

Then I add a listener, and try to join a session, I get a non-zero result from joinSession() but then calling any session method on the result like getSessionID or getSessionName() all return 0 or NULL. No methods are called at all in the listener either.

I tried the same code with exact same steps in both linux and Android, I even used the exact same session name, user name, … etc and the exact same token string. Everything works well on Android, but that unexpected behaviour on linux.

I have my encrypted SDK logs and can share them with team… Any help?

Thank you.

@mina1

are you doing something like this for the join session?

void joinVideoSDKSession(std::string &session_name, std::string &session_psw, std::string &session_token)
{
    video_sdk_obj = CreateZoomVideoSDKObj();
    ZoomVideoSDKInitParams init_params;
    init_params.domain = "https://go.zoom.us";
    init_params.enableLog = true;
    init_params.logFilePrefix = "zoom_videosdk_demo";
    init_params.videoRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;
    init_params.shareRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;
    init_params.audioRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;
    init_params.enableIndirectRawdata = false;

    ZoomVideoSDKErrors err = video_sdk_obj->initialize(init_params);
    if (err != ZoomVideoSDKErrors_Success)
    {
        return;
    }
    IZoomVideoSDKDelegate *listener = new ZoomVideoSDKDelegate();
    video_sdk_obj->addListener(dynamic_cast<IZoomVideoSDKDelegate *>(listener));
    ZoomVideoSDKSessionContext session_context;
    session_context.sessionName = session_name.c_str();
    session_context.sessionPassword = session_psw.c_str();
    session_context.userName = "Linux SDK";
    session_context.token = session_token.c_str();
    session_context.videoOption.localVideoOn = true;
    session_context.audioOption.connect = true;
    session_context.audioOption.mute = true;
    IZoomVideoSDKSession *session = NULL;
    if (video_sdk_obj)
        session = video_sdk_obj->joinSession(session_context);
}

I assume ZoomVideoSDKDelegate is a custom application class that implements the IZoomVideoSDKDelegate interface. If this is correct, then yes, this code sample is pretty much what I am doing except that I am using domain https://zoom.us. Does this make a difference? It works on Android with that domain.

Is there any tricks in what files to include and how to do the linking? Can I assume it should work if compiling and linking succeed?

Are there any thread tricks involved? Does the listener callback happen in the same or a different thread?