We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

Q: class in a DLL

brosoft
brosoft asked
on
Medium Priority
314 Views
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?

Thanks,
Mike
Comment
Watch Question

Author

Commented:
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.
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION

Author

Commented:
If I link with the .lib, what is the point of having a dll?

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

Jose.

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

Commented:
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... :(

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

Commented:
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.

Thanks,
Mike
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.