3

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

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

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

4

2 回答 2

7

您应该使用静态命令行参数运行msvcbuild.bat 。

于 2014-02-23T11:59:20.593 回答
4

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

于 2013-08-11T21:26:18.060 回答