如何静态构建和链接LuaJIT(VS 2013)

时间:2013-07-29 14:58:02

标签: c++ linker luajit visual-studio-2013

前提:我希望我的C ++应用程序不依赖于Microsoft Visual C++ redistributable,所以我可以发送可以开箱即用的可执行文件。

我先做了什么:将运行时库从Multithread (/MT)切换到DLL Multithread (/MD),以避免需要msvcr110.dll(并且不应该是VS 2013要求120版本,因为它是编译器版本?)。要做到这一点,我还必须重新编译我使用相同的运行时库的另一个库,这是有效的。我有我的.exe可以在没有问题的情况下运行(或者我没有意识到,哈哈)。

然后我添加了一些使用LuaJIT的功能。我已经通过随程序包提供的msvcbuild.bat构建了LuaJIT,它就像一个魅力,但现在我的可执行文件需要运行msvcr110.dll。我想这是因为LuaJIT是用/ MD标志编译的,但是我想知道是否有正确的方法来做我想要的。

2 个答案:

答案 0 :(得分:5)

您应该使用 static 命令行参数运行 msvcbuild.bat

答案 1 :(得分:4)

我没有对此进行测试,但您很可能需要在编译的每一段上使用/ MT标志。在这种情况下,你的主程序和LuaJIT。在那个msvcbuild.bat文件(https://github.com/luvit/luajit-2.0/blob/master/src/msvcbuild.bat)中,您可以看到它们是明确指定/ MD(第17行)。 Methinks是你的问题。将其更改为/ MT并查看。