Q: class in a DLL

Posted on 1998-09-13
Last Modified: 2013-11-20
How do I make a dll with a class in it that I can access in another MFC app?  I have been using _declspec(dllexport) and (dllimport) but for some reason when I link the project to test the class, it has unresolved externals to the imported (from the dll) class's functions.

How to I get a memory pointer to the class (that resides in the dll) so I can use class whatever in my test application?

Question by:brosoft

Author Comment

ID: 1322113
PS. I would love some project code for making a DLL with a class and then accessing it from another project with LoadLibrary() etc...  Thanks again.

Accepted Solution

fjsen earned 100 total points
ID: 1322114
Try linking with the .lib file generated by the first application.



Author Comment

ID: 1322115
If I link with the .lib, what is the point of having a dll?
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.


Expert Comment

ID: 1322116
If you change the DLL code without change the interface, you don't need to recompile the client project.



Expert Comment

ID: 1322117
Use that dll as extension dll and export the class in this way.

class AFX_EXT_CLASS CMyClass : public CDialog


, then link this .lib with that calling application. then compile the application.
U won't get any errors.

Author Comment

ID: 1322118
So what is the point of a dll then?  If I just have to link the lib, then having a DLL is pointless.  I could just use a .lib file instead and statically link it to every file that I compile that needs the dll.  

I am trying to cut down on repetitive code and use one dll for all my programs to use the common functions.  Just using a lib would make it pointless... :(


Expert Comment

ID: 1322119
When creating a dll you will get a lib as well. This lib will hold the code to use the dll. Once you have linked your MFC app with this library who will be able to change the code of your dll without linking your app again. The only thing you have to keep in mind is that the names of the entry points, such as your class and its methods, should not be changed.

Author Comment

ID: 1322120
thanks, I figured it out.  Explicit DLL's are what we are talking about here, linking with the .lib and all that.

Implicit ones are the one's I wanted.  Where you grab a ptr to the function or class and then don't have to link with the .lib.


Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Unix / Linux grid computing 5 157
sameEnds challenge 3 159
fizzArray  challenge 1 83
wordappend challenge 8 177
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 (2) modeless dialog and a worker thread.  Handling data shared between threads.  Recursive functions. Continuing from the tenth article about sudoku.   Last article we worked with a modal dialog to help maintain informat…
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
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.

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