I'm developing an object-oriented C++ library which I would like to expose some functionality of to users in Excel. Ideally I would like to use the library within Excel VB and provide some higher-level functions that I can expose through the spreadsheet.
I have written a C-API for the C++ library but it's awkward to use as objects require explicit create/dispose calls.
Using the C-API, I have constructed a Python API where create/dispose calls are handled by Python classes. The Python API can be used to build higher level functions and expose them to a user through IPython notebook. The IPython notebook can be configured to load Python modules and specify the path on which the DLL is loaded without admin rights:
import sys
sys.path.insert(0,notebook_directory)
import mylib
mylib.Config_library_path(notebook_directory) #Used for DLL loading by ctypes
this means that I can distribute the notebook as a self contained entity. I need to do the same with an Excel document and some DLLs I distribute with it.
I can write C# bindings around the C-API in the same way I did for Python but I cannot see how to get a C# DLL loaded into Excel without global DLL registration.
I can use the C-API to create an XLL and Declare functions in VB but this means I have to handle memory management within Excel VB.
What options are available for creating a self-contained Excel tool like I did for IPython notebook?