Building a Discord Bot on Windows Using Visual Studio
To create a basic bot using Visual Studio 2019 or Visual Studio 2022, follow the steps below to create a working skeleton project you can build upon.
If you prefer a video tutorial, you can watch the video below! Otherwise, scroll past and keep reading!
Video Tutorial
Text Tutorial
Make sure you have Visual Studio 2019 or 2022. Community, Professional or Enterprise work fine. These instructions are not for Visual Studio Code. You can download the correct version here. Note that older versions of Visual Studio will not work as they do not support enough of the C++17 standard.
Clone the template project. Be sure to clone the entire project and not just copy and paste the .cpp file.
Double click on the MyBot.sln file in the folder you just cloned:
Add your bot token (see Creating a Bot Token) and guild ID to the example program:
Click "Local Windows debugger" to compile and run your bot!
Observe the build output, so long as the build output ends with "1 succeeded" then the process has worked. You may now run your bot!
Troubleshooting
If you get an error that looks like this:
1>MyBot.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class dpp::async<struct dpp::confirmation_callback_t>
referenced in function "public: class dpp::task<void> __cdecl `int __cdecl main(void)'::`2'::<lambda_2>$_ResumeCoro$1::operator()(struct dpp::slashcommand_t const &)const "
1>Done building project "MyBot.vcxproj" -- FAILED.
Make sure your don't have another version of the library installed through vcpkg. The template uses a slightly different version of D++ that has coroutines, while the vcpkg version does not, and the latter overwrites it! Uninstalling the library through vcpkg should fix this issue.
If you get an error that a DLL is missing (e.g. dpp.dll or opus.dll) when starting your bot, then simply copy all DLLs from the bin directory of where you cloned the D++ repository to, into the same directory where your bot's executable is. You only need to do this once. There should be several of these DLL files: dpp.dll, zlib.dll, openssl.dll and libcrypto.dll (or similarly named SSL related files), and opus.dll. Note the template project does this for you, so you should never encounter this issue.
If you get an error that says "Debug/Release mismatch", you are using the wrong configuration of the D++ dll. Your bot's executable and the dpp.dll file should both be built in the same configuration (Release or Debug), you get this error if they are different. This also means you altered the template in a significant way, we recommend you undo your modifications or reinstall the template.