在 2022/11/2 02:11, xclaesse@gmail.com 写道: > Oh, that seems to be working now. > > Still got a small issue, glib compiles with -Werror=missing- > prototypes: > > ../foo.h:7:5: error: no previous prototype for ‘g_strcmp0’ [- > Werror=missing-prototypes] > > I'm a bit lost with what the prototype would look like in this case. > > I think `__attribute__((__dllexport__))` will be needed when building > with MSVC at least. Seems gcc, clang and msvc each wants a different > trick :/ > > GCC accepts a plain declaration (no `extern`, no `__attribute` whatsoever), but Clang usually warns about the inconsistency, and sometimes rejects it, so my suggestion is to copy the declaration from its definition verbatim. It might look unnecessarily verbose, however, should be safe in practice. I don't know much about how MSVC handles such inconsistency, though. ``` #ifndef INSIDE_FOO_C __attribute__((__gnu_inline__)) __inline__ #endif extern int g_strcmp0(const char*str1, const char*str2); #ifndef INSIDE_FOO_C __attribute__((__gnu_inline__)) __inline__ #endif extern int g_strcmp0(const char*str1, const char*str2) { ... ``` -- Best regards, LIU Hao