MATLAB Answers

Why am I not able to use 32-bit DLL COM Objects in 64-bit MATLAB?

118 views (last 30 days)
I can instantiate a 32-bit COM DLL-file as an In-Process (InProc) ActiveX Server in 32-bit MATLAB:
a = actxserver('MSOSOAP.HttpConnector30')
a =
COM.MSOSOAP_HttpConnector30
However, when I attempt the same in 64-bit MATLAB:
b = actxserver('MSOSOAP.HttpConnector30')
I receive the following error:
??? Server Creation Failed: Class not registered

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 10 Jul 2020 at 4:00
Edited: MathWorks Support Team on 10 Jul 2020 at 10:49
The documentation for MATLAB 7.6 (R2008a) has been updated to incorporate the relevant information. This information can be accessed under the section 'Instantiating a DLL component':
For previous product releases, read below for any possible workarounds:
Microsoft does not support loading 32-bit DLLs or In-Process (InProc) COM Servers into a 64-bit application, or vice-versa. For additional information, please refer to the following resource on MSDN:
This limitation does not apply to COM Automation servers that are EXE-files (e.g. Excel, 32-bit MATLAB etc.). These servers will work as expected.

  3 Comments

Mr64
Mr64 on 3 Feb 2016
One might get away with a "system-supplied surrogate":
This would be the according Windows registry hack:
  1. Find the {GUID} of your component in HKLM\SOFTWARE\Classes\<ProgID>\CLSID.
  2. Create the string value "AppId" in HKLM\SOFTWARE\Classes\Wow6432Node\CLSID\{GUID} and set it to {GUID}.
  3. Create the key "{GUID}" in HKLM\SOFTWARE\Classes\Wow6432Node\AppId.
  4. Create the string value "DllSurrogate" in HKLM\SOFTWARE\Classes\Wow6432Node\AppId\{GUID} and leave it empty.
Worked for me on Windows7.
Siraj Issani
Siraj Issani on 4 Sep 2018
The "system-supplied surrogate" hack worked for me as well! Thanks @Mr64!

Sign in to comment.

More Answers (0)

Products


Release

R2006b

Translated by