Re: about casting
"Tony Johansson" <t.johansson@logica.com> ha scritto nel messaggio
news:eNfS%23TjVJHA.4812@TK2MSFTNGP05.phx.gbl...
I have a COM dll where I have some problem with casting for one method.
Below you see a signature for method InitRules2 which is a method that is
located in the COM dll and is called from C# asp.net web application.
STDMETHODIMP CSyntaxObj::InitRules2(IHandle_DS* handle_ds, BSTR Provider,
BSTR DataSource, BSTR UserId, BSTR Password, BSTR ProductID, BSTR
Revision, BSTR ApplicationID, BSTR ApplicationRev, BSTR SubfileID,
VARIANT_BOOL *bRes)
{
...
Handle_DS* m_handle_DS = handle_ds;
...
}
I create this object handle_ds from C# by calling C-tor in the COM dll.
This object is then passed from C# as the first parameter in method
InitRules2
as you can see.
Here its called handle_ds and is of type Handle_DS.
From the two preceding threads, it is clear to me that you are trying to do
COM programming just "by guessing", which is IMHO wrong, and cause of
frustration.
It seems to me that some fundamental concepts of COM, like the concept of
COM *interfaces*, are not clear to you.
Before trying to create some "automatic" code using ATL wizards of Visual
Studio, if you really need COM programming, I would suggest you to start
learning the basic concepts of COM, which is not trivial and requires some
practice with the compiler (besides studying on some proper book).
The ATL newsgroup microsoft.public.vc.atl is the proper place to ask
questions about COM code developed using ATL (which is the primary tool for
COM development in C++, IMHO).
I think that using C++/CLI to interface your C++ code with .NET (C#, etc.)
is much easier than using COM (especially if you have to learn COM first).
C++/CLI is considered not much as a .NET first-class language (like C# or
VB.NET), but it is considered as the best tool to build bridging layers
between native code written in C++ and managed .NET code.
Giovanni