Serial Port DLL C++

Posted on 2010-08-13
Medium Priority
Last Modified: 2013-12-14
I'm looking to create a C/C++ dll for customers to use to connect to my company's hardware. I have no issue with the communication portion, I looking for a little guidance on how to construct the dll so that when the client programmer links to the dll, it creates an object that is created on linking, exposed methods like add and subtract that are public and available while the dll is linked. Once the WEP is called, the connection is closed and the object is destroyed.

Any and all suggestions are welcome. Thanks!

Question by:PmiDeveloper

Expert Comment

ID: 33435318
What is your IDE and compiler?
LVL 11

Accepted Solution

cup earned 1000 total points
ID: 33435574
Constructing the DLL


New Project
On the left, Select Visual C++ Projects
On the right, Select Win32 Console Project
Type in the project name etc
Click OK

Win32 Application Wizard
click Application Settings

Win32 Application Wizard
Select DLL
Select Export Symbols
Click Finish

What you'll get is an example header and source which exports symbols for  
   o  a class
   o  a variable
   o  a function.

And that's it.  The rest of the stuff like precompiled headers and code generation types you probably already know.

Not sure if you're having problems with the design of the behavioural bits of your DLL

Author Comment

ID: 33436178
@masheik - I'm currently have copies of Dev-C++, and Visual C++ Express 2010. Dev-C++ doesn't seem to have any easy way to export the symbols and I'm not sure on the limitation of the express version yet.

@cup - I did some more research after I posted the question and I think I found part of my answer. I believe I can use the states within the DLL main function to initialize a connection and state of an object on linking, and close a connection and destroy an object on release. Does that sound correct?
LVL 11

Expert Comment

ID: 33438025
On MS, DLLs are actually executables where main is called DLLMain.  DLLMain is just an entry point to keep the linker happy.  When it was Windows 2.x and 3.x, it was used but I've never seen it in use on either NT or anything that came after 95.

There is nothing to stop you from doing it the way you suggested but I don't know whether it will work or not.  Also, how are you using the DLL?  Are you using LoadLibrary or are you linking it in?  If you're using LoadLibrary, you're in charge of what gets called and what doesn't.  If you're linking it in, you need to call some routine to create the connection and to destroy.  That can be done in several ways, depending on how you design your code.

Assisted Solution

xpero earned 1000 total points
ID: 33453520
in most IDEs there a template project for creating dlls : file->new ->project->Dynamic link library.

You can use dll entry point call reasons to creat and destroy the connection state.

    HINSTANCE hinstDLL,  // handle to DLL module
    DWORD fdwReason,     // reason for calling function
    LPVOID lpReserved )  // reserved
    // Perform actions based on the reason for calling.
    switch( fdwReason ) 
        case DLL_PROCESS_ATTACH:
         // Initialize once for each new process.
         // Return FALSE to fail DLL load.

        case DLL_THREAD_ATTACH:
         // Do thread-specific initialization.

        case DLL_THREAD_DETACH:
         // Do thread-specific cleanup.

        case DLL_PROCESS_DETACH:
         // Perform any necessary cleanup.
    return TRUE;  // Successful DLL_PROCESS_ATTACH.

Open in new window


Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Article by: evilrix
Looking for a way to avoid searching through large data sets for data that doesn't exist? A Bloom Filter might be what you need. This data structure is a probabilistic filter that allows you to avoid unnecessary searches when you know the data defin…
There's never been a better time to become a computer scientist. Employment growth in the field is expected to reach 22% overall by 2020, and if you want to get in on the action, it’s a good idea to think about at least minoring in computer science …
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.

627 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