Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

msvc c++ build failing to compile #13

Open
Skytrias opened this issue Jun 25, 2019 · 8 comments
Open

msvc c++ build failing to compile #13

Skytrias opened this issue Jun 25, 2019 · 8 comments

Comments

@Skytrias
Copy link

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

@AregevDev
Copy link

Have the same issue, not sure how to fix it...

@inkydragon
Copy link

inkydragon commented Dec 16, 2019

  1. initial empty vs2019 project
  2. set /SUBSYSTEM:WINDOWS flag
  3. add _CRT_SECURE_NO_WARNINGS flag
  4. put everything in the root folder of your project, or you may Configure Include Directories to include src and demo folder.
  5. use NuGet add SDL2 and nupengl.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
  6. change include:
    In main.c: #include <SDL2/SDL.h> => #include "SDL.h"
    In renderer.c:
    • #include <SDL2/SDL.h> => #include "SDL.h";
    • #include <SDL2/SDL_opengl.h> => #include "SDL_opengl.h"
  7. add opengl32.lib to Additional Dependencies
  8. build and run!

@gvanem
Copy link

gvanem commented May 31, 2020

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

@immortalx74
Copy link

I tried @inkydragon 's suggestion but no luck. I'm not using VS, just invoking the compiler from a developer command prompt.
Any ideas?

@gvanem
Copy link

gvanem commented Oct 9, 2021

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

@immortalx74
Copy link

@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.

@g012
Copy link

g012 commented Oct 9, 2021 via email

@immortalx74
Copy link

Problem fixed. I was only compiling main.c and microui.c. I assumed that renderer.c was included in main.c

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants