Solved

explicitly load a MFC extension DLL that exports a CObject derived class?

Posted on 2001-09-08
12
448 Views
Last Modified: 2013-11-20
Is it possible to explicitly load a MFC extension DLL that exports a CObject derived class?  The calling exe is an MFC app.  I have no problem doing this using a .lib file linking implicitly.  Can you please supply a small code sample.  
0
Comment
Question by:Surfer
  • 8
  • 3
12 Comments
 
LVL 1

Expert Comment

by:MRNMurthy
ID: 6468016
Hi,

I will try to send the code.

From

MRN Murthy
0
 

Author Comment

by:Surfer
ID: 6468770
That would be great!  I look forward to your email.
0
 

Author Comment

by:Surfer
ID: 6469022
That would be great!  I look forward to your email.
0
 

Author Comment

by:Surfer
ID: 6469144
That would be great!  I look forward to your email.
0
 
LVL 3

Expert Comment

by:cypherljk
ID: 6471835
Surfer,

What is that you can not do? Do you need to know how to load a dl explicitly or do you need to know how to export a MFC derived class in a dll?  If you explain a bit more we can help you.

My 2 cents...
0
 

Author Comment

by:Surfer
ID: 6473242
The main part of my question is:

I have a class
AClass : poblic CObject
{
...
}
I want to export my class from my DLL to the calling app.  If I use implicit linking I know what to do.  However, if I link explicit, what is the best way to import this class into my exe?  I know who to use exlictt linking with functions, but how do I do it with a classes and is it safe?

Thanks
0
Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

 
LVL 3

Expert Comment

by:cypherljk
ID: 6475157
Surfer,

To export an entire class from a dll you must prefix the class with AFX_EXT_CLASS like so...
class AFX_EXT_CLASS AClass : public CObject
{
...
}


and of course your dll must be an MFC extension dll since you are subclassing CObject

My 2 cents...
0
 

Author Comment

by:Surfer
ID: 6475178
How do I use explicit linking to call this class from my exe?
0
 

Author Comment

by:Surfer
ID: 6475189
How do I use explicit linking to call this class from my exe?
0
 

Author Comment

by:Surfer
ID: 6475190
How do I use explicit linking to call this class from my exe?
0
 

Author Comment

by:Surfer
ID: 6475191
How do I use explicit linking to call this class from my exe?
0
 
LVL 3

Accepted Solution

by:
cypherljk earned 200 total points
ID: 6475226
1.) Create an AFX_EXTENSION_MODULE object in your application i.e. the CWinApp derived object
ex.

static AFX_EXTENSION_MODULE extMyExtesnion;

2.) Call AfxLoadLibrary() passing in the name of your library

3.) Call the API function AfxInitExtensionModule() in your application's InitInstance() function passing it the address of your object in step 1 and and handle returned from step 2

4.) Add the following to your dll code in the dllmain
if (uReason == DLL_PROCESS_ATTACH)
{
    if (!AfxInitExtensionModule(extMyExtension, hInst)
        return;
    else if (uReason == DLL_PROCESS_DETACH)
        AfxTermeExtensionModule(extMyExtension);
}

5.) Call AfxFreeLibrary() passing in the handle to the library when you app exits

This will allow you to create a manages instance of the exported class object like a view etc etc.

My 2 cents...
       
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Importing  SSL Certificate into Firefox using GPO 28 196
substring method in java 1 79
fizzArray  challenge 1 49
Problem to event 3 52
Introduction: Dynamic window placements and drawing on a form, simple usage of windows registry as a storage place for information. Continuing from the first article about sudoku.  There we have designed the application and put a lot of user int…
Introduction: Ownerdraw of the grid button.  A singleton class implentation and usage. Continuing from the fifth article about sudoku.   Open the project in visual studio. Go to the class view – CGridButton should be visible as a class.  R…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…

747 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

10 Experts available now in Live!

Get 1:1 Help Now