Details - LUAMOD_API defined as 'extern "C"' in C++. - "ANSI C" is in fact "ISO C" (comments) - Removed option -std from makefile in testes/libs. (Easier to change to C++ for tests).
diff --git a/lapi.c b/lapi.c index 55e371d..27fa524 100644 --- a/lapi.c +++ b/lapi.c
@@ -484,7 +484,7 @@ /* ** Returns a pointer to the internal representation of an object. -** Note that ANSI C does not allow the conversion of a pointer to +** Note that ISO C does not allow the conversion of a pointer to ** function to a 'void*', so the conversion here goes through ** a 'size_t'. (As the returned pointer is only informative, this ** conversion should not be a problem.)
diff --git a/lmathlib.c b/lmathlib.c index 2f0f3d1..a6b13f9 100644 --- a/lmathlib.c +++ b/lmathlib.c
@@ -278,7 +278,7 @@ */ /* -** This code uses lots of shifts. ANSI C does not allow shifts greater +** This code uses lots of shifts. ISO C does not allow shifts greater ** than or equal to the width of the type being shifted, so some shifts ** are written in convoluted ways to match that restriction. For ** preprocessor tests, it assumes a width of 32 bits, so the maximum
diff --git a/loslib.c b/loslib.c index 3f60502..b7a2b0d 100644 --- a/loslib.c +++ b/loslib.c
@@ -34,7 +34,7 @@ #if defined(LUA_USE_WINDOWS) #define LUA_STRFTIMEOPTIONS "aAbBcdHIjmMpSUwWxXyYzZ%" \ "||" "#c#x#d#H#I#j#m#M#S#U#w#W#y#Y" /* two-char options */ -#elif defined(LUA_USE_C89) /* ANSI C 89 (only 1-char options) */ +#elif defined(LUA_USE_C89) /* C89 (only 1-char options) */ #define LUA_STRFTIMEOPTIONS "aAbBcdHIjmMpSUwWxXyYZ%" #else /* C99 specification */ #define LUA_STRFTIMEOPTIONS "aAbBcCdDeFgGhHIjmMnprRStTuUVwWxXyYzZ%" \
diff --git a/luaconf.h b/luaconf.h index 1ac6432..96a7780 100644 --- a/luaconf.h +++ b/luaconf.h
@@ -319,7 +319,13 @@ ** More often than not the libs go together with the core. */ #define LUALIB_API LUA_API + +#if defined(__cplusplus) +/* Lua uses the "C name" when calling open functions */ +#define LUAMOD_API extern "C" +#else #define LUAMOD_API LUA_API +#endif /* }================================================================== */
diff --git a/testes/libs/lib11.c b/testes/libs/lib11.c index 377d0c4..6a85f4d 100644 --- a/testes/libs/lib11.c +++ b/testes/libs/lib11.c
@@ -1,7 +1,7 @@ #include "lua.h" /* function from lib1.c */ -int lib1_export (lua_State *L); +LUAMOD_API int lib1_export (lua_State *L); LUAMOD_API int luaopen_lib11 (lua_State *L) { return lib1_export(L);
diff --git a/testes/libs/makefile b/testes/libs/makefile index 4e7f965..cf4c688 100644 --- a/testes/libs/makefile +++ b/testes/libs/makefile
@@ -5,7 +5,7 @@ CC = gcc # compilation should generate Dynamic-Link Libraries -CFLAGS = -Wall -std=c99 -O2 -I$(LUA_DIR) -fPIC -shared +CFLAGS = -Wall -O2 -I$(LUA_DIR) -fPIC -shared # libraries used by the tests all: lib1.so lib11.so lib2.so lib21.so lib2-v2.so