microui
microui copied to clipboard
msvc c++ build failing to compile
hey ive been looking into ui's and your library looks pretty nice. However im getting weird link errors and error: LNK2019 unresolved symbol ""void __cdecl mu_init(struct mu_Context *)" or when i inserted extern "C" myself in your files i got it to "mu_init" being unresolved.
my build.bat uses these libs gdi32.lib opengl32.lib winmm.lib
just wondering if anyone usese windows with msvc c++ here and got this figured out
Have the same issue, not sure how to fix it...
- initial empty vs2019 project
- set
/SUBSYSTEM:WINDOWSflag - add
_CRT_SECURE_NO_WARNINGSflag - put everything in the root folder of your project, or you may Configure
Include Directoriesto includesrcanddemofolder. - use NuGet add
SDL2~~andnupengl.core~~ (windows already has opengl) Or you may add those dependences by hand like: How do I link SDL with Visual Studio 2019 - Stack Overflow - change include:
In
main.c:#include <SDL2/SDL.h>=>#include "SDL.h"Inrenderer.c:#include <SDL2/SDL.h>=>#include "SDL.h";#include <SDL2/SDL_opengl.h>=>#include "SDL_opengl.h"
- add
opengl32.libtoAdditional Dependencies - build and run!
just wondering if anyone usese windows with msvc c++ here and got this figured out
You probably compiled your project as C++. Look, there's no:
#ifdef __cplusplus
extern "C" {
#endif
inside microui.h
I tried @inkydragon 's suggestion but no luck. I'm not using VS, just invoking the compiler from a developer command prompt. Any ideas?
Your project is C++, right? Apply this simple patch:
--- a/src/microui.h 2021-10-09 12:10:12
+++ b/src/microui.h 2021-10-09 12:14:10
@@ -8,6 +8,10 @@
#ifndef MICROUI_H
#define MICROUI_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#define MU_VERSION "2.01"
#define MU_COMMANDLIST_SIZE (256 * 1024)
@@ -293,4 +297,8 @@
void mu_begin_panel_ex(mu_Context *ctx, const char *name, int opt);
void mu_end_panel(mu_Context *ctx);
+#ifdef __cplusplus
+};
+#endif
+
#endif
@gvanem I don't have a "project" as I'm not actually using Visual Studio. I invoke the compiler from the command line, and the default behavior with .c extensions is to compile as C. Even if I force C compilation with /Tc or /TC compiler flags, I always get the error:
LINK : fatal error LNK1561: entry point must be defined
I also tried with your fix and forcing C++ compilation, in which case I get several C4576 errors.
You don’t have a main / winmain function.
Le sam. 9 oct. 2021 à 16:54, immortalx74 @.***> a écrit :
@gvanem https://github.com/gvanem I don't have a "project" as I'm not actually using Visual Studio. I invoke the compiler from the command line, and the default behavior with .c extensions is to compile as C. Even if I force C compilation with /Tc or /TC compiler flags, I always get the error:
LINK : fatal error LNK1561: entry point must be defined
I also tried with your fix and forcing C++ compilation, in which case I get several C4576 errors.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/rxi/microui/issues/13#issuecomment-939309730, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAH5RYT42INKH5XMWGTCM3TUGBJRTANCNFSM4H3KSBCA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
Problem fixed. I was only compiling main.c and microui.c. I assumed that renderer.c was included in main.c