Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding my DLL into a Visual Studio project in C++

I am working on a project that involves making a dynamic link library, so I want to test it in a console app in Visual Studio.

The DLL is also made in Visual Studio, it doesn't have much, just a few functions in it. I'm not sure if I'm just supposed to include the librarys header in the include directories panel in Properties, or do something else

A lot of people say I'm supposed to add its corresponding .lib file in the Library or Reference directory, but I'm not sure that VS generates a .lib file alongside the DLL. I'm using VS 2015.

like image 747
Reaper9806 Avatar asked Jul 23 '15 19:07

Reaper9806


2 Answers

I don't have VS in front of me this very moment, but these should be the general steps to set it up:

Properties->Linker->Input: your.lib
Properties->Linker->Additional Library Directories: ../your/bin
Properties->General->Compiler->Additional Include Directories: ../your/include

To build your app, the DLL's API headers must be in the include for the compile-time, it's LIB files in the bin for the link-time. Once you have your app EXE, all you need is the DLL to be in the same folder as your EXE when it executes.

You might also want to add the dll project and the app project into a common solution in VS and add (right click) Project Dependency from the app to the dll. This ensures correct order of building, assuming you are going to build the dll at all.

like image 107
V-R Avatar answered Oct 22 '22 06:10

V-R


You can also do what I did.

  1. You can create a Libs directory inside of your Solution directory.
  2. You can then place your .DLL files inside of the Libs directory or some sub-directory inside of Libs

    • In my case, I added the entire SFML-2.3.2 directory in there, which included the source-code, .lib files, and .dll files.
    • I did link up what I could in the project properties, but I used Visual Studio's macros to fill in the path name to the Solution directory. Just in case I wanted to put this in version control and work on it from multiple machines.
  3. Then I opened up the Project's Property Page.

  4. Within the property page, I went to Build Events -> Post-Build Event -> Command Line
  5. Within the Command Line, you can add a copy command that will copy any needed files into the same directory as the executable that will need them.
    • In my case I used: copy "$(SolutionDir)Libs\SFML-2.3.2\bin\*" "$(TargetDir)"
    • I could have written multiple commands to copy just the individual files that I needed, but I had spent a good three hours trying to get SFML to work without actually installing it.
like image 34
Francisco Chavez-Tejeda Avatar answered Oct 22 '22 07:10

Francisco Chavez-Tejeda