I am trying to use and reference a 3rd party SDK. I don't have DMA installed locally but I am publishing to DMA using DIS.

I have added the path to my DDL folder in the DIS as well

What am I missing?
Hi Arbab,
Can you try whether creating an Interop assembly from that Blackmagic design switchers assembly works?
For this, you can use the Type Library Importer tool (TlbImp.exe) as follows (run as administrator):
"C:\Path\To\BMDSwitcherAPI.dll" /out:Interop.BMDSwitcherAPI.dll
Once the interop assembly is created, reference it in your connector solution (and update any namespace references if needed (e.g. BMDSwitcherAPI -> Interop.BMDSwitcherAPI)).
Hi Arbab,
this approach indeed assumes that the COM objects are already registered.
For development, downloading the correct version of the ATEM Switchers Update package and executing the installer from that package should register the COM objects during installation.
For production environments, I would expect the COM objects to be registered as part of the product installer. This might need to be verified with the vendor but the Blackmagic Switchers SDK manual mentions the following:
The libraries supporting the Blackmagic SDK are shipped as part of the product installers for each supported product line. Applications built against the interfaces shipped in the SDK will dynamically link against the library installed on the end-user’s system.
Hi Pedro,
I have installed the ATEM switcher locally in the development machine.
We are uploading the dlls on the production and will let you how it goes.
Hi Pedro,
I have added more details as separate answer as comment doesn't allow adding images
Hi Pedro,
So I have done following so far:
1) We tested a sample application by BlackMagic to test the connectivity and it worked from the machine on which DMA is installed. (screenshot attached)

2) We tried the updated protocol as well and still getting DLL not found as can be seen by the following logs
2025/10/23 14:44:44.366|SLProtocol - 10536 - Atem Switcher-1|10828|CManagedScript::Load|ERR|-1|Compilation failed for QAction 9000
(1,7): error CS0246: The type or namespace name 'BMDSwitcherAPI' could not be found (are you missing a using directive or an assembly reference?)
(85,28): error CS0246: The type or namespace name 'IBMDSwitcherInput' could not be found (are you missing a using directive or an assembly reference?)
(92,52): error CS0246: The type or namespace name 'IBMDSwitcher' could not be found (are you missing a using directive or an assembly reference?)
(92,12): error CS0246: The type or namespace name 'IBMDSwitcherMixEffectBlock' could not be found (are you missing a using directive or an assembly reference?)
(121,53): error CS0246: The type or namespace name 'IBMDSwitcher' could not be found (are you missing a using directive or an assembly reference?)
(121,76): error CS0246: The type or namespace name '_BMDSwitcherPortType' could not be found (are you missing a using directive or an assembly reference?)
(121,12): error CS0246: The type or namespace name 'IBMDSwitcherInput' could not be found (are you missing a using directive or an assembly reference?)
(24,13): error CS0246: The type or namespace name 'IBMDSwitcherDiscovery' could not be found (are you missing a using directive or an assembly reference?)
(24,51): error CS0246: The type or namespace name 'CBMDSwitcherDiscovery' could not be found (are you missing a using directive or an assembly reference?)
(27,13): error CS0246: The type or namespace name 'IBMDSwitcher' could not be found (are you missing a using directive or an assembly reference?)
(28,13): error CS0246: The type or namespace name '_BMDSwitcherConnectToFailure' could not be found (are you missing a using directive or an assembly reference?)
(33,13): error CS0246: The type or namespace name 'IBMDSwitcherMixEffectBlock' could not be found (are you missing a using directive or an assembly reference?)
(34,13): error CS0246: The type or namespace name 'IBMDSwitcherTransitionParameters' could not be found (are you missing a using directive or an assembly reference?)
(34,75): error CS0246: The type or namespace name 'IBMDSwitcherTransitionParameters' could not be found (are you missing a using directive or an assembly reference?)
(35,13): error CS0246: The type or namespace name 'IBMDSwitcherTransitionWipeParameters' could not be found (are you missing a using directive or an assembly reference?)
(35,83): error CS0246: The type or namespace name 'IBMDSwitcherTransitionWipeParameters' could not be found (are you missing a using directive or an assembly reference?)
(36,13): error CS0246: The type or namespace name 'IBMDSwitcherInput' could not be found (are you missing a using directive or an assembly reference?)
(36,73): error CS0103: The name '_BMDSwitcherPortType' does not exist in the current context
(43,60): error CS0103: The name '_BMDSwitcherTransitionSelection' does not exist in the current context
(46,56): error CS0103: The name '_BMDSwitcherTransitionStyle' does not exist in the current context
(49,48): error CS0103: The name '_BMDSwitcherPatternStyle' does not exist in the current context
(96,40): error CS0246: The type or namespace name 'IBMDSwitcherMixEffectBlockIterator' could not be found (are you missing a using directive or an assembly reference?)
(97,9): error CS0246: The type or namespace name 'IBMDSwitcherMixEffectBlockIterator' could not be found (are you missing a using directive or an assembly reference?)
(97,104): error CS0246: The type or namespace name 'IBMDSwitcherMixEffectBlockIterator' could not be found (are you missing a using directive or an assembly reference?)
(103,9): error CS0246: The type or namespace name 'IBMDSwitcherMixEffectBlock' could not be found (are you missing a using directive or an assembly reference?)
(125,40): error CS0246: The type or namespace name 'IBMDSwitcherInputIterator' could not be found (are you missing a using directive or an assembly reference?)
(126,9): error CS0246: The type or namespace name 'IBMDSwitcherInputIterator' could not be found (are you missing a using directive or an assembly reference?)
(126,101): error CS0246: The type or namespace name 'IBMDSwitcherInputIterator' could not be found (are you missing a using directive or an assembly reference?)
(132,9): error CS0246: The type or namespace name 'IBMDSwitcherInput' could not be found (are you missing a using directive or an assembly reference?)
(136,13): error CS0246: The type or namespace name '_BMDSwitcherPortType' could not be found (are you missing a using directive or an assembly reference?)
3) we have uploaded the dll files to ProtocolScripts folder as well.
4) Please note that ATEM software is installed on the same DMA and it works too (hence dlls are registered in the system through setup as well)
Not sure if it helps, but the DataMiner version is 10.5

Hi Tom,
As per the documentation provided by the vendor,
"The SDK interface is modeled on Microsoft’s Component Object Model (COM). On Microsoft Windows platforms, it is provided as a native COM interface registered with the operating system. On other platforms application code is provided to allow the same COM style Interface to be used. "
I had tried adding as assembly reference, but still gets added as COM.
Do you think its possible to use the SDK to build the connector?
Hi Arbab,
I see that you've added the DLL as a COM reference to QAction 9000. This is probably not supported (yet) by DIS.
Could you please try adding the DLL as assembly reference to QAction 9000 instead? This way it should also be published to the DMA. Maybe you could also try adding the DLL as both a COM reference and an assembly reference.
I tried but I guess I am missing something here. The output file is reduced to 111KB instead of original 8604 KB.
Also now I am getting following message:
2025/10/22 08:55:47.978|SLManagedScripting.exe|ManagedInterop|CRU|-1|13188|167|9000 started
2025/10/22 08:55:47.979|SLManagedScripting.exe|ManagedInterop|CRU|-1|13188|167|Exception in 9000: Retrieving the COM class factory for component with CLSID {BA726CE9-B8F5-4B1B-AA00-1A2DF3998B45} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
2025/10/22 08:55:47.979|SLManagedScripting.exe|ManagedInterop|CRU|-1|13188|167|StackTrace in 9000: at QAction.Run(SLProtocol protocol)
2025/10/22 08:55:47.979|SLManagedScripting.exe|ManagedInterop|ERR|0|13188|167|QA9000|9000|Run|Exception thrown:
System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {BA726CE9-B8F5-4B1B-AA00-1A2DF3998B45} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
at QAction.Run(SLProtocol protocol)