【发布时间】:2011-11-07 21:06:23
【问题描述】:
我有一个关于 math.h 中定义的常量如何链接的问题。
在 Visual Studio 2010 中,我正在构建一个带有“MD”的 64 位 dll c++ 库,该库使用使用“HUGE_VAL”的第三方库。从标题“math.h”看来,“HUGE_VAL”被定义为“_HUGE”。当我尝试构建时,会导致链接错误
错误 LNK2001:无法解析的外部符号 _HUGE
在做了一些谷歌搜索之后,我认为 _HUGE 应该在 msvcrt.lib 中定义。链接了MSVCRT.lib,但是我没有链接libcmt.lib,因为会导致重新定义错误。
让我感到奇怪的是,当我创建一个使用 HUGE_VAL 并使用 /verbose 作为链接器选项的简单控制台程序时,它显示 _IMP_HUGE 正在链接。
我真正好奇的是_HUGE在什么阶段变成了_IMP_HUGE?另外,是否有其他人收到未解决的 _HUGE 错误,是否有人对如何修复它有任何想法?
感谢您阅读冗长的问题和任何想法。
【问题讨论】:
-
我对 Visual Studio 一无所知(我只在 Linux 上使用 GCC),但 HUGE_VAL 是标准的。也许您需要要求您的编译器严格遵循更新的标准?
-
您正在混合使用 /MT 编译的 .obj/.lib 文件。不能混用,所有链接的代码都需要使用相同的设置。
标签: c++ visual-studio 64-bit constants static-linking