Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to compile a c++ dll using visual studio?

I have some c++ classes that I'd like to compile into a dll file. When I am trying to compile the project, I receive an unresolved external symbol error:

  1. error LNK2019: unresolved symbol _WinMain@16 referenced in function tmainCRTStartup
  2. fatal error LNK1120: 1 unresolved external

This is what I've done so far:

I just created a new win32 project, selected dll and empty project. Then I copied all h and cpp files into the directory and added them to the project.

Furthermore I added a file "DllMain.cpp" containing this code:

#include <windows.h>

BOOL APIENTRY DllMain( HANDLE hModule, 
                   DWORD  ul_reason_for_call, 
                   LPVOID lpReserved
                 )
{
    return TRUE;
}
like image 581
Pedro Avatar asked Feb 23 '23 18:02

Pedro


2 Answers

For some reason the project got configured to build a .exe.

But you can easily fix your project. Open the properties dialog and go to "Configuration Properties/General". On the right side locate the "Configuration Type" item and change it from "Application" to "Dynamic Library".

Also keep in mind that you need to change this on all the configurations (i.e. Debug and Release).

like image 179
Miguel Avatar answered Mar 05 '23 16:03

Miguel


When you create a new Win32 Application project, select "Application Settings" in the wizard, and select "DLL" for the application type. It will start with an empty DllMain.

You say that you did this, but it should not be looking for WinMain then. To double check you're really building a DLL, look in project settings -> General, and check that:

  1. "Configuration type" is "Dynamic Library (.dll)"
  2. Use of MFC is set to "Use Standard Windows Libraries"
  3. Use of ATL is "Not using ATL"
like image 24
tenfour Avatar answered Mar 05 '23 17:03

tenfour