Solved

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

Posted on 2001-09-08
12
457 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
Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

 

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
 
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

Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Rewrite URL With Encoded Characters 6 78
mixString challenge 36 122
if loop in java 3 142
haveThree challenge 22 118
Introduction: Database storage, where is the exe actually on the disc? Playing a game selected randomly (how to generate random numbers).  Error trapping with try..catch to help the code run even if something goes wrong. Continuing from the seve…
Introduction: Dialogs (1) modal - maintaining the database. Continuing from the ninth article about sudoku.   You might have heard of modal and modeless dialogs.  Here with this Sudoku application will we use one of each type: a modal dialog …
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.
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

777 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