lua-rapidjson icon indicating copy to clipboard operation
lua-rapidjson copied to clipboard

Compile with TDM-GCC 32 on Windows

Open brynne8 opened this issue 6 years ago • 0 comments

I finally successfully compiled the library on Windows with mingw32 (TDM-GCC), with some modifications. I opened this issue to see if the compilation process could be improved.

--- file2.hpp	2019-05-27 19:30:14.480608100 +0800
+++ file.hpp	2019-05-26 19:06:07.831800400 +0800
@@ -7,13 +7,7 @@
 namespace file {
 	inline FILE* open(const char* filename, const char* mode)
 	{
-#if WIN32
-		FILE* fp = nullptr;
-		fopen_s(&fp, filename, mode);
-		return fp;
-#else
 		return fopen(filename, mode);
-#endif
 	}
 }

It seems to work well but in the last step (linking)

-- LUA_RAPIDJSON_VERSION: 0.5.0
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Program Files (x86)/lua-rapidjson-0.5.0/build.luarocks
[ 20%] Linking CXX shared module rapidjson.dll
g++.exe: error: C:Program Files (x86)LuaRocks/lua5.1.dll: No such file or directory
CMakeFiles\lua-rapidjson.dir\build.make:134: recipe for target 'rapidjson.dll' failed
mingw32-make.exe[2]: *** [rapidjson.dll] Error 1
CMakeFiles\Makefile2:71: recipe for target 'CMakeFiles/lua-rapidjson.dir/all' failed
mingw32-make.exe[1]: *** [CMakeFiles/lua-rapidjson.dir/all] Error 2
Makefile:128: recipe for target 'all' failed
mingw32-make.exe: *** [all] Error 2

Error: Build error: Failed building.

I found the C:Program Files (x86)LuaRocks/lua5.1.dll was wrong because the backslash \ is regarded as escape character. I don't know how to change the CMake configuration, so I manually modified build.luarocks/CMakeFiles/lua-rapidjson.dir/linklibs.rsp to something like

"C:/Program Files (x86)/LuaRocks/lua5.1.dll" -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 

And ran

C:\TDM-GCC-32\bin\g++.exe  -O3 -DNDEBUG  -shared -o rapidjson.dll -Wl,--major-image-version,0,--minor-image-version,0 -Wl,--whole-archive CMakeFiles\lua-rapidjson.dir/objects.a -Wl,--no-whole-archive @CMakeFiles\lua-rapidjson.dir\linklibs.rsp

And succeeded! The compiled dll is here rapidjson.zip

brynne8 avatar May 27 '19 12:05 brynne8