Click here to Skip to main content
15,896,207 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionRe: switching between two windows using glut Pin
Hamid_RT20-Jun-07 8:47
Hamid_RT20-Jun-07 8:47 
AnswerRe: switching between two windows using glut Pin
moonraker92820-Jun-07 9:50
moonraker92820-Jun-07 9:50 
Questionxloper struct Pin
A7Zulu19-Jun-07 9:37
A7Zulu19-Jun-07 9:37 
AnswerRe: xloper struct Pin
David Crow19-Jun-07 10:21
David Crow19-Jun-07 10:21 
GeneralRe: xloper struct Pin
A7Zulu19-Jun-07 10:47
A7Zulu19-Jun-07 10:47 
Questionreturning an pointer to an array to excel from C++ Pin
A7Zulu19-Jun-07 9:35
A7Zulu19-Jun-07 9:35 
AnswerRe: returning an pointer to an array to excel from C++ Pin
Sameerkumar Namdeo19-Jun-07 17:06
Sameerkumar Namdeo19-Jun-07 17:06 
QuestionDynamically Instantiating Class Defined In DLL Pin
Peter Saint19-Jun-07 8:13
Peter Saint19-Jun-07 8:13 
Hi,

I would like my VC++ client application to dynamically instantiate a class defined in a DLL knowing only (1) a DLL file name and (2) the name of a class defined in the DLL. Is this possible without using .NET?

Here's what I am currently doing...

An exported function in a DLL returns an instance of the class MyDerivedClass (which is a class derived from MyBaseClass):

extern "C" <br />
{<br />
    __declspec(dllexport) MyBaseClass* getMyBaseClass()<br />
    {<br />
        AFX_MANAGE_STATE(AfxGetStaticModuleState())<br />
        MyBaseClass* answer = (MyBaseClass*)new MyDerivedClass();<br />
        return (answer);<br />
    }<br />
}


My client application loads the DLL at the appropriate time and calls the known, exported function to retrieve a pointer to a newly instantiated MyBaseClass object:

// Retrieve the name of the DLL to be loaded from the config file<br />
CString libraryFileName = ...<br />
<br />
// Load the library using the configured file name.<br />
HINSTANCE library = ::LoadLibrary(libraryFileName);<br />
<br />
// Obtain a reference to the exported function found in the library.<br />
typedef MyBaseClass* (*ExternalFunction)();<br />
ExternalFunction function = (ExternalFunction)::GetProcAddress(library, "getMyBaseClass");<br />
<br />
// Call the exported function in the library to instantiate the 'MyDerivedClass' object.<br />
MyBaseClass* aBaseClass = function();


This approach works fine but I think it would be cleaner for developers of the DLL to only have to define their MyBaseClass-derived class in the DLL and not have to implement the 'C' function to return it.

Any and all help appreciated!

Peter

AnswerRe: Dynamically Instantiating Class Defined In DLL Pin
Matthew Faithfull19-Jun-07 9:00
Matthew Faithfull19-Jun-07 9:00 
QuestionRe: Dynamically Instantiating Class Defined In DLL Pin
Peter Saint19-Jun-07 9:34
Peter Saint19-Jun-07 9:34 
AnswerRe: Dynamically Instantiating Class Defined In DLL Pin
Matthew Faithfull19-Jun-07 9:54
Matthew Faithfull19-Jun-07 9:54 
GeneralRe: Dynamically Instantiating Class Defined In DLL Pin
Peter Saint19-Jun-07 10:00
Peter Saint19-Jun-07 10:00 
AnswerRe: Dynamically Instantiating Class Defined In DLL Pin
Hans Dietrich19-Jun-07 11:34
mentorHans Dietrich19-Jun-07 11:34 
AnswerRe: Dynamically Instantiating Class Defined In DLL Pin
BadKarma20-Jun-07 1:24
BadKarma20-Jun-07 1:24 
Questionhow to make stand-alone application with matlab? [modified] Pin
suroor45319-Jun-07 8:04
suroor45319-Jun-07 8:04 
QuestionListview control background colour Pin
Perspx19-Jun-07 7:18
Perspx19-Jun-07 7:18 
AnswerRe: Listview control background colour Pin
Randor 19-Jun-07 8:30
professional Randor 19-Jun-07 8:30 
QuestionRe: Listview control background colour Pin
David Crow19-Jun-07 8:46
David Crow19-Jun-07 8:46 
AnswerRe: Listview control background colour Pin
Randor 19-Jun-07 9:06
professional Randor 19-Jun-07 9:06 
GeneralRe: Listview control background colour Pin
Randor 19-Jun-07 9:09
professional Randor 19-Jun-07 9:09 
AnswerRe: Listview control background colour Pin
Mark Salsbery19-Jun-07 8:36
Mark Salsbery19-Jun-07 8:36 
GeneralRe: Listview control background colour Pin
Perspx19-Jun-07 9:36
Perspx19-Jun-07 9:36 
AnswerRe: Listview control background colour Pin
Hamid_RT20-Jun-07 8:46
Hamid_RT20-Jun-07 8:46 
QuestionProper learning of C++/MFC/Visual Studio Pin
ldsdbomber19-Jun-07 6:17
ldsdbomber19-Jun-07 6:17 
AnswerRe: Proper learning of C++/MFC/Visual Studio Pin
shivditya19-Jun-07 6:27
shivditya19-Jun-07 6:27 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.