Solved

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

Posted on 2003-11-12
3
681 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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

On Demand Webinar: Networking for the Cloud Era

Ready to improve network connectivity? Watch this webinar to learn how SD-WANs and a one-click instant connect tool can boost provisions, deployment, and management of your cloud connection.

Question has a verified solution.

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

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 …
What my article will show is if you ever had to do processing to a listbox without being able to just select all the items in it. My software Visual Studio 2008 crystal report v11 My issue was I wanted to add crystal report to a form and show…
THe viewer will learn how to use NetBeans IDE 8.0 for Windows to perform CRUD operations on a MySql database.
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…

707 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