Dice!是一款AGPL项目,它的源码在GitHub上即可轻松找到,修改都会即时推送上去。除了获取官方发布的二进制版本,你也可以自行编译来测试新功能(也避免被其他人说我众筹是变相收费之类的问题)。请注意Github上的版本很可能并非稳定,并且有的时候也可能编译失败。如果出现以上状况,可以尝试回退一些commit重新编译。
Github Repo: 点击这里
为Windows编译:
使用MSVC: nuget restore && msbuild Dice.sln
除MSVC外,Dice也可以使用其他工具编译,但是首先你需要编译zlib, openssl, libcurl和aws-sdk-cpp (只需要编译S3和Core)(你可能需要调整下面的编译参数来把上面的这些库link进去)
使用GCC: g++ -shared -static -std=c++17 -O2 -o com.w4123.dice.dll -Wl,--kill-at -I CQSDK\ -I QQAPI\ -I Lua\ -I Dice\ CQSDKCPP\*.cpp Dice\*.cpp Lua\*.c QQAPI\*.cpp -pthread -lWinInet -luser32
使用Clang-Cl: clang-cl --target=i686-pc-windows-msvc /MT /O2 /EHsc /std:c++17 /D "UNICODE" /LD /link "user32.lib" /o com.w4123.dice.dll /I CQSDK\ /I QQAPI\ /I Lua\ /I Dice\ CQSDKCPP\*.cpp Dice\*.cpp QQAPI\*.cpp Lua\*.c -Wno-invalid-source-encoding
使用Clang: clang++ --target=i686-pc-windows-gnu -m32 -shared -static -o com.w4123.dice.dll -Xclang -flto-visibility-public-std -Wl,--kill-at -std=c++17 -O2 -I CQSDK\ -I QQAPI\ -I Lua\ -I Dice\ CQSDKCPP\*.cpp Dice\*.cpp Lua\*.c QQAPI\*.cpp -lWinInet -luser32 -pthread -Wno-invalid-source-encoding
为Linux编译(以下以Ubuntu为例):
先安装libcurl4-openssl-dev然后pull一份aws-sdk-cpp的代码,使用以下命令编译
cmake -DBUILD_ONLY="s3;core" -DBUILD_SHARED_LIB=OFF
然后 make
然后 make install
然后使用GCC编译:
g++ -fPIC -std=c++17 -O2 -shared -o com.w4123.dice.dll -I CQSDK -I QQAPI -I Lua -I Dice CQSDKCPP/*.cpp Dice/*.cpp Lua/*.c QQAPI/*.cpp -o com.w4123.dice.dll -Wl,-Bstatic -laws-cpp-sdk-s3 -laws-cpp-sdk-core -laws-c-event-stream -laws-checksums -laws-c-common -Wl,-Bdynamic -lcurl -static-libgcc -static-libstdc++ -pthread -Wl,--exclude-libs,ALL -Wl,-rpath=./data/MiraiNative CQP.dll -s
clang同理这里就不写了()
为Android编译:
先准备好ndk,然后pull一份aws-sdk-cpp的代码,然后用以下命令编译
cmake -DBUILD_ONLY="core;s3" -DTARGET_ARCH=ANDROID -DNDK_DIR=/path/to/ndk -DBUILD_SHARED_LIBS=OFF -DFORCE_SHARED_CRT=OFF -DANDROID_ABI=arm64-v8a -DANDROID_NATIVE_API_LEVEL=21
然后make
然后make install
然后pull一份libiconv的代码,静态编译一份libiconv.a
然后编译Dice:
aarch64-linux-android21-clang++ -fvisibility=hidden -fPIC -std=c++17 -O2 -o com.w4123.dice.dll -I CQSDK -I QQAPI -I Dice -I Lua Dice/*.cpp QQAPI/*.cpp Lua/*.c CQSDKCPP/*.cpp -Wno-invalid-source-encoding -Wno-unknown-attributes -Wno-ignored-attributes -Wl,-rpath=./data/MiraiNative -Wl,-Bstatic -laws-cpp-sdk-s3 -laws-cpp-sdk-core -laws-c-event-stream -laws-checksums -laws-c-common -liconv -Wl,-Bdynamic -llog -ldl -static-libgcc -static-libstdc++ CQP.dll -Wl,--exclude-libs,ALL -s