【发布时间】:2020-06-10 21:50:00
【问题描述】:
我已将 VolPack (https://graphics.stanford.edu/software/volpack/) 编译为 Visual Studio 6(在 Windows XP 下)中的静态库,因为我认为这就是它的用途,它不会在 Visual Studio 2019 下编译。但尝试编写Visual Studio 2019 中的 C++ 程序并链接到 volpack.lib 我收到错误:错误 LNK1104 无法打开文件 'LIBCD.lib'
(我认为这不是 VolPack 特有的错误,我认为它适用于在 VC 6 下编译然后链接到更高版本的 VS 的任何库,所以我认为这个问题对于StackOverflow。)
我发现了这个:https://support.microsoft.com/en-us/help/154753/description-of-the-default-c-and-c-libraries-that-a-program-will-link,这解释了为什么它使用该库,但我不知道在 VS 6 中如何处理它。我没有看到关于多线程的选项以使其使用不同的库,快速谷歌搜索显示 VS 6 不支持多线程。
我确实找到了这个:How to solve "cannot open file 'LIBCD.lib' " in visual studio 2008?,但我不确定该解决方案是否与我的问题相关,因为字符串“GLUI”没有出现在我试图链接到的库中。即使它是我的问题的解决方案,我也不知道从哪里获得 GLUI 的源代码,我需要对 makefile 进行哪些更改,或者如何使 VS 6 使用新的重新编译的 GLUI,不管是什么.
下一个解决方案基本上是告诉链接器忽略 LIBCD.lib,但这给了我其他错误。我发现了这个:https://www.youtube.com/watch?v=zKrggjsgQx4,它基本上说忽略 LIBCD.lib,然后将运行时库更改为多线程调试,但这也给了我错误。
尝试在 VS 2019 下编译 VolPack 时遇到的错误都是“可能统一化的局部指针变量”,因此可能需要进行一些简单的修改才能使其在 VS 2019 下编译,但我不是 C 和专家我不想处理试图弄清楚如何修改程序并可能破坏它的头痛。因此,任何人都知道解决该问题的简单方法,该方法也可能有效。谢谢。
【问题讨论】:
-
你写的是 C,然后你写的是 C++。然后你再写C。是哪一个?
-
我认为您无法解决此错误。
-
提醒:C== 允许函数重载。许多编译器供应商使用 name mangling 来解析重载函数。许多 C 库不考虑名称修饰。这就是为什么不建议混合使用两种语言的原因。
-
尝试使用不同代的编译器套件来尝试构建一个程序是不明智的并且会带来麻烦。我建议不要尝试制作这种奇怪的混搭,而是专注于让所有内容都使用相同版本的 VS 进行编译——大概是 VS 2019。
-
VC++ 6 完全死了。它甚至不编译我们所知道的 C++,因为它早于原始标准。
标签: c++ c visual-studio visual-studio-2019 visual-studio-6