I have a regular DLL created in C++ that can run VBScript procedures from a VBScript file. The DLL is able to pass variant strings and safearray as parameters to script procedures. However, for a vector of name-value pairs I want to pass it to the script procedure by wrapping the vector in a COM class and passing its IDispatch pointer as parameter to the script. Is it possible to have a COM class and create the COM object inside a regular DLL, and then get its IDispatch interface to a variant variable? If yes, how (sample codes if possible)?
What exactly does it do? I have been browsing the Direct3D API code and I see most interfaces are declared using DECLARE_INTERFACE_ providing the derived interface name along with the IUnknown base as that is what DECLARE_INTERFACE_ is for; deriving from a base. What I've read elsewhere is that DECLARE_INTERFACE is for declaring interfaces when there is no base interface but my impression was that all interfaces derive from IUnknown somewhere up the tree so what does DECLARE_INTERFACE do?
When I look at where it's defined, I see these comments:
* DECLARE_INTERFACE(iface) is used to declare an interface that does
* not derive from a baseinterface.
* DECLARE_INTERFACE_(iface, baseiface) is used to declare an interface
* that does derive from a baseinterface.
Note the distinction between DECLARE_INTERFACE and DECLARE_INTERFACE_
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
Yup. That's what I read as well. My point is, if IUnknown is a required common base interface to every COM interface then why does DECLARE_INTERFACE(iface) even exist? If IUnknown is a required base interfact then EVERY declaration should have a DECLARE_INTERFACE_(iface, IUnknown) somewhere up the hierachy. But some don't. They just have DECLARE_INTERFACE(iface) with no reference to IUknown whatsoever.
Thanks! I just did some reading off the back of your reply and I see that MIDL is not used soley for COM operations but for RPC in general. I was not aware of that. Thanks for pointing me in the right direction.
I would like to have a wrapper for Rcom server in C#. I do not know what a wrapper is or how to create it.
This is what i did and i do not know if i am right or wrong.
I opened a project in C# which is integrated to R, using two dll files and this is what i did:
Open Project -> References -> Add References -> COM -> RCOM 1.0 type library (located at library/rcom/libs/rcom_srv.tlb)
This creates a dll file in my system named Interop.RCOMServerLib.dll. Is this what is meant by the wrapper file. I have no clue, its just a wild guess. and if this is the right thing i am talking about then how can i view the content of the dll file to know what all functions it is using.
This is what i wanted. A com wrapper, which can be interchangeable between programs and can be used to check what all functions that com can execute. if this is a dll file or tlb file then how can i open it or view it to know all the functions it will execute.
Thanks for the reply. Oleview.exe was not helping much in getting the classes and the functions that are being used in the dll file. So after searching for a while, i got hold of this software which clearly shows all the functions that are present.
ex, I have created a com comp(inproc) which is registerd and ready to use, i want my clinet to access this, what all the steps to be taken from my end (like what all info i need to give to them )and client side ?
I'm familiar with 3 ways to access an in-proc COM component -
You can use the COM APIs like CoCreateInstance to access the component.
You can use #import to instantiate the COM component using its type library and also create smart pointers for all its interfaces.
You can use ATL smart pointer classes like CComPtr to access the COM component.
«_Superman_» I love work. It gives me something to do between weekends.
But before using coCreateInstance u need to know what all the interfaces and components avaiable, so that u can have CLSID and IID of the the component. Also if i am writting client pgm for a component , what should i do to know abt components before i call CoCreateInstance ??
Is there any way client can find details about ur component apart from importing typelib ??