We need to acknowledge that we would still be scratching our heads if it weren’t for Bryan Maher’s help.
We have been going on and on the different SDK and why we needed to go to through C# and not C++. Why the Windows SDK not the other platforms.
Well, we hit an issue where we had to modify the wrapper to include another function in C++. (The IBO Creator class). This caused us to open pandora’s box and see what lies under the hood. You can check the details about the breakout room here.
We need to know what the SDK was built on and what it was made of.
We rolled up our sleeves and we went head in into the folder labeled
zoom_sdk_c_sharp_wrap. We were greeted with 76 files. All header files and some CPP files. The Readme file was ambiguous only stating that the main files were
zoom_sdk_c_sharp_wrap.h. It only mentioned that the dll was created by Appwizard (which is the tool that manages the C++ project in the visual studio. Check more about it here)
Well we have a bunch of header files and Cpp files does that mean we can actually see the code that ZOOM is built on? Answer is no. The cpp files here are just wrapping class definitions of the pure c++ files.
Well, where is the core of these files? They need to reference the actual code sometime!! We did a search of any .dll in the files and we only found one being referenced. Only one.dll file is mentioned throughout the entire directory
sdk.dll and it is only mentioned in one file (\zoom_sdk_c_sharp_wrap\wrap\sdk_loader.cpp)
This got us thinking. the project already needed
zoom_sdk_dotnet_wrap.dll to work but that was just using
Can’t we just import the sdk.dll and not even worry about the wrapper and modifying it to get that one class we needed so bad?
Well we tried that and we got the following
Well, what does that even mean!!!!
Bryan pointed out the following answer on StackOverflow
This kinda showed that Zoom was using their own unmanaged library when making this dll so we couldn’t use the tools to extract it.
We even tried it .Just to make sure
We first used tlbimp.exe. We got the following error and got a dead-end as expected.
Bryan suggested that we could use http://www.swig.org/Doc3.0/CSharp.html
He tried it himself and mentioned the following
… using Swig to generate a wrapper, it failed because it only supports ISO C++ standards and this Zoom SDK uses all kinds of Microsoft-specific import statements.
Which kind points to how platform specific this SDK is which is counterintuitive since zoom runs on everything.
What is the decision on this?
Well, We got an update on Zoom saying that they would incorporate this themselves but it will take time. Until then this is on the backlog and we are gonna find some nontechnical ways around it
This story seems super linear and it looks like we knew what we were doing. I assure you it wasn’t and we don’t know what we are doing most of the time.