D++ (DPP)
C++ Discord API Bot Library
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

  1. 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.
  2. Clone the template project. Be sure to clone the entire project and not just copy and paste the .cpp file.
  3. Double click on the MyBot.sln file in the folder you just cloned:
  4. Add your bot token (see Creating a Bot Token) and guild ID to the example program:
  5. Click "Local Windows debugger" to compile and run your bot!
  6. 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>
    __cdecl dpp::interaction_create_t::co_reply(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)const
    " (__imp_?co_reply@interaction_create_t@dpp@@QEBA?AV?$async@Uconfirmation_callback_t@dpp@@@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
    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 "
    (??R<lambda_2>$_ResumeCoro$1@?1??main@@YAHXZ@QEBA?AV?$task@X@dpp@@AEBUslashcommand_t@3@@Z)
    1>...\windows-bot-template-main\x64\Debug\MyBot.exe : fatal error LNK1120: 1 unresolved externals
    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.
  • Stuck? You can find us on the official Discord server - ask away! We don't bite!
D++ Library version 10.0.34D++ Library version 10.0.33D++ Library version 10.0.32D++ Library version 10.0.31D++ Library version 10.0.30D++ Library version 10.0.29D++ Library version 10.0.28D++ Library version 10.0.27D++ Library version 10.0.26D++ Library version 10.0.25D++ Library version 10.0.24D++ Library version 10.0.23D++ Library version 10.0.22D++ Library version 10.0.21D++ Library version 10.0.20D++ Library version 10.0.19D++ Library version 10.0.18D++ Library version 10.0.17D++ Library version 10.0.16D++ Library version 10.0.15D++ Library version 10.0.14D++ Library version 10.0.13D++ Library version 10.0.12D++ Library version 10.0.11D++ Library version 10.0.10D++ Library version 10.0.9D++ Library version 10.0.8D++ Library version 10.0.7D++ Library version 10.0.6D++ Library version 10.0.5D++ Library version 10.0.4D++ Library version 10.0.3D++ Library version 10.0.2D++ Library version 10.0.1D++ Library version 10.0.0D++ Library version 9.0.19D++ Library version 9.0.18D++ Library version 9.0.17D++ Library version 9.0.16D++ Library version 9.0.15D++ Library version 9.0.14D++ Library version 9.0.13D++ Library version 9.0.12D++ Library version 9.0.11D++ Library version 9.0.10D++ Library version 9.0.9D++ Library version 9.0.8D++ Library version 9.0.7D++ Library version 9.0.6D++ Library version 9.0.5D++ Library version 9.0.4D++ Library version 9.0.3D++ Library version 9.0.2D++ Library version 9.0.1D++ Library version 9.0.0D++ Library version 1.0.2D++ Library version 1.0.1D++ Library version 1.0.0