如何在VS 2013中静态构建和链接LuaJIT。

前提条件:我希望我的 C++ 应用程序不依赖于任何“Microsoft Visual C++可再发行组件”,这样我就可以发布我的可执行文件,并且能够直接使用。

我做的第一件事:将运行时库从“DLL Multithread (/MD)”切换到“Multithread (/MT)” ,以避免需要“msvcr110.dll”(而且难道 Visual Studio 2013不需要 120 版本吗,因为这是编译器版本吗?)。为了做到这一点,我还必须使用相同的运行时库重新编译我正在使用的另一个库,而且它很有效。我有我的 .exe 文件可以在任何地方运行而不会有问题(或者我不知道,哈哈)。

然后我添加了一些使用 LuaJIT 的功能。我使用软件包提供的“msvcbuild.bat”构建了 LuaJIT,并且它效果很好,但是现在我的可执行文件需要“msvcr110.dll”才能运行。我想这是因为 LuaJIT 是使用/MD标志编译的,但我想知道是否有一种适当的方法来做我想做的事情。

点赞
用户961810
用户961810

我没有测试过,但你很可能需要在你进行的每个编译片段上使用 /MT 标志。在这种情况下,既包括你的主程序,也包括 LuaJIT。在那个 msvcbuild.bat 文件中(https://github.com/luvit/luajit-2.0/blob/master/src/msvcbuild.bat),你可以看到他们明确指定了 /MD (第17行)。我认为这就是你的问题。改为 /MT 然后看看。

2013-08-11 21:26:18
用户514616
用户514616

你应该使用 静态 命令行参数运行 _msvcbuild.bat_。

2014-02-23 11:59:20