Solved

How to use ATL COM object created in VC++ in another ATL COM object in VC++

Posted on 2003-11-12
3
675 Views
Last Modified: 2013-12-14
I have ATL COM created in MS  Visual C++ 6.0, now I would like to use that in the different ATL COM object. How do I do it? Are there any changes to existing ATL Object in order to make it usable in a new ATL object? What do I have to do to get functionality of first ATL object in the second ATL object. I have a source code for first object and .dll and .lib files.

More details please.
0
Comment
Question by:germaks
  • 2
3 Comments
 
LVL 19

Expert Comment

by:Dexstar
ID: 9735938
germaks:

> I have ATL COM created in MS  Visual C++ 6.0, now I would like to use that in
> the different ATL COM object. How do I do it? Are there any changes to existing
> ATL Object in order to make it usable in a new ATL object? What do I have to
> do to get functionality of first ATL object in the second ATL object. I have
> a source code for first object and .dll and .lib files.

I would do it like this.  In a header file for your new ATL object, add this:

     #import "<PATH>\ObjectOne.dll" no_namespaces

(Where <PATH> and ObjectOne point to your original DLL file).

Then, here is some sample code of using your object (called YourObject, in this example).  Be sure to wrap your code in try/catch blocks to catch _com_error& e's.

     try
     {
          IYourObjectPtr spObject;

          spObject.CreateObject( __uuidof(YourObject) );
          spObject->SomeMethod();
     }
     catch ( _com_error& e )
     {
          // Handle the error
     }


Hope that helps,
Dex*
0
 

Author Comment

by:germaks
ID: 9736532
It almost works,
when I compile it I get the error that CreateObject is not a member of '_com_ptr_t<class _com_IIID<struct IVerify,&struct __s_GUID _GUID_bc555c18_f885_4b65_aebf_683ba81cc964> >'

here is the code

IVerifyPtr LicV;
LicV.CreateObject( __uuidof(Verify) );
0
 
LVL 19

Accepted Solution

by:
Dexstar earned 500 total points
ID: 9741275
germaks:

Oops.  My mistake.  This line should be this:
     LicV.CreateInstance( __uuidof(Verify) );

(It's a hazard of going back and forth between VB and C++ all day...)

Dex*
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Copying WordPress Pages 5 77
dialer.exe 4 58
Resharper CTRL+N: Differentiate between files with same name 2 64
Using MS Code on my Mac 6 65
Introduction This article is a continuation of the C/C++ Visual Studio Express debugger series. Part 1 provided a quick start guide in using the debugger. Part 2 focused on additional topics in breakpoints. As your assignments become a little more …
With most software applications trying to cater to multiple user needs nowadays, the focus is to make them as configurable as possible. For e.g., when creating Silverlight applications which will connect to WCF services, the service end point usuall…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now