A brief overview on how to create a DLL (Dynamically Linked Library) in VB (Visual Basic) .Net which can be used from within Matlab. This is done using the actxserver command. One needs to use an approach like this instead of using the "loadlibrary" command, as one does not have the appropriate header file.
Hopefully this will provide a starting point for people like me who need some indication on where to start.
the zip contains:
- Step By Step Instructions in a PDF Document
- A Visual Studio 2008 VB.net DLL (Class) Project
- A Matlab file which shows how to call functions from the VB Dll, once it's been created
(I did this With Visual Studio 2008, and Matlab 2009a, but it should work with older versions too)
Gordon (2019). How to load / call functions from a VB DLL (https://www.mathworks.com/matlabcentral/fileexchange/24261-how-to-load-call-functions-from-a-vb-dll), MATLAB Central File Exchange. Retrieved .
I tried this and had no success. It seems that (at least in 2011 versions), that when registering the file using regasm.exe, it is necessary to use the /codebase option. For example using the Windows command prompt (run as administrator) from the directory that the file is located):
c:\...\...\>c:\windows\microsoft.net\framework\v4.0.30319\regasm.exe VB_Dll_Demo.dll /codebase
Under the 64 bit version of Matlab, do the same thing except use framework64 instead of framework:
c:\...\...>c:\windows\microsoft.net\framework64\v4.0.30319\regasm.exe VB_Dll_Demo.dll /codebase
I used .net framework 4.0 and compiled as "anycpu", selecting "register for COM interop". It warned that the name wasn't strong when I ran regasm so the .dll should be signed to avoid problems.
Ok, now I've got the answer to my previous question. Each object's display method is assigned to a matlab function (m-file), then the call from simulink is made using the block "MATLAB Function". That's it, so easy.
But, I'm still thinking about those COM objects...how to start a xserver in C s-function and then use the object's methods? Is this senseless??
What if the dll was made in C++, was it easier to use the library in simulink s-functions?
I did what u told and it works! Great! Thanks.
Do you know how to use the object's methods in Simulink?
Inspired by: Using C# functions and forms in Matlab