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

我首先做的是:将运行时库从 Multithread (/MT) 切换到 DLL Multithread (/MD) 以避免需要 msvcr110.dll(VS 2013 不应该需要 120 版本,因为它是编译器版本?)。为此,我还必须重新编译另一个库,我正在使用同一个运行时库,这很有效。我有我的 .exe 可以毫无问题地在任何地方运行(或者我不知道,哈哈)。

然后我添加了一些使用 LuaJIT 的功能。我已经通过随包提供的 msvcbuild.bat 构建了 LuaJIT,它的工作原理非常棒,但现在我的可执行文件需要 msvcr110.dll 才能运行。我想那是因为 LuaJIT 是用/MD 标志编译的,但我想知道是否有合适的方法来做我想做的事。

最佳答案

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

关于c++ - 如何静态构建和链接 LuaJIT (VS 2013),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17927357/

10-10 14:47