DPP
DPP copied to clipboard
xmake dpp.lib(cluster.cpp.obj) : error LNK2019
Git commit reference: ffa2653f7504a701735ed23cfb2d503648253a96
Describe the bug: When trying to install dpp through xmake, I receive this error, which does not allow me to start the project.
To Reproduce: Steps to reproduce the behavior:
- Create a new xmake project
- Update the xmake.lua file by adding the dpp package, below the minimum configuration:
add_rules("mode.debug", "mode.release")
add_requires("dpp")
target("test-bot")
set_kind("binary")
add_files("src/*.cpp")
add_packages("dpp")
- Then build it
xmake build
Screenshots:
System Details:
- OS: Windows 11 Pro 64 bits
- Version: 22621.2715
Adicional Info: I literally did what I was told on your website, here is the link: https://dpp.dev/10.0.28/install-xmake.html
@Mishura4 This is related to #980. Is this because it's not ran inside visual studio?
I'll investigate. In the meantime you can add DPP_BYPASS_VERSION_CHECKING to the list of defines in your project to work around this
you didn't link the windows sdk which contains the messageboxA function, this is required client side in the program which includes dpp.
@braindigitalis Thanks to you, I managed to compile. I found how to link to the sdk. My xmake.lua file now looks like this:
add_rules("mode.debug", "mode.release")
add_requires("dpp")
target("test-bot")
add_rules("win.sdk.application")
set_kind("binary")
add_files("src/*.cpp")
add_packages("dpp")
You need to update this on your website.
Please don't close this if it's not yet resolved on our end.
Thank you though for the solution, we'll look at this. There are potentially other solutions as well.
Maybe we could simply change the solution to patch Scary->MyHead? If the windows api is found (check with #ifdef) then we do the message box, otherwise we could do a fallback and just send the error log via std::cout or something.
I have ideas, I'll take a look soon Very busy atm so probably next week
I have ideas, I'll take a look soon Very busy atm so probably next week
Okie dokie!
This issue has had no activity and is being marked as stale. If you still wish to continue with this issue please comment to reopen it.

did you forgor mor?
@Mishura4 Did you forgor even mor?
Why not including the pure user32.lib from windows?, I'm not so experienced handling with xmake but something like a pragma to import user32 in this lines.
Also would be useful if TEXT() macro (defined in windows.h) is used in MessageBox to support unicode and non-unicode windows builds, avoiding compile issues in the future.
#ifdef _WIN32
#include <windows.h>
#pragma comment(lib, "user32.lib")
if constexpr (BuildType != build_type::universal && BuildType != expected) {
MessageBox(
nullptr,
TEXT(
"Mismatched Debug/Release ...\n"
"..."
),
TEXT("D++ Debug/Release mismatch"),
MB_OK | MB_ICONERROR
);
// ...
}
#endif
// ...
Useful links: MessageBoxA requirements MessageBoxW requirements