首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"math.h“中的_HUGE和__IMP__HUGE

"math.h“中的_HUGE和__IMP__HUGE
EN

Stack Overflow用户
提问于 2011-11-07 21:06:23
回答 1查看 3.1K关注 0票数 5

关于math.h中定义的常量是如何链接的,我有一个问题。

在visual 2010中,我正在用"MD“构建一个64位的dll c++库,它使用使用"HUGE_VAL”的第三方库。从标题"math.h“来看,"HUGE_VAL”似乎被定义为"_HUGE“。当我尝试构建时,链接错误将导致

错误LNK2001:未解析的外部符号_HUGE

在做了一些googling之后,我认为_HUGE应该在msvcrt.lib中定义。MSVCRT.lib是链接的,但是我没有链接libcmt.lib,因为它会导致重新定义错误。

让我感到奇怪的是,当我创建一个使用HUGE_VAL并使用/verbose作为链接器选项的简单控制台程序时,它会显示_IMP_HUGE正在被链接。

我真正好奇的是,_HUGE在什么阶段变成了_IMP_HUGE?另外,是否还有其他人得到了未解决的_HUGE错误,是否有人对如何修复该错误有任何想法?

谢谢你阅读了这个冗长的问题和任何想法。

EN

回答 1

Stack Overflow用户

发布于 2013-08-22 00:41:31

我在VC11.0中经历过这个问题。我得到的唯一错误是一个未解决的符号_HUGE错误。

我正在与动态多线程运行时库链接,我发现如果我在链接步骤中包括"libcmt.lib“,那么这个问题就解决了(或者解决了)。

我开始研究如何在SDK中定义头,寻找线索,并发现在编译步骤:_DLL中缺少了一个编译器预目录。

当您使用动态运行时库构建时,_HUGE变量需要是__declspec(dllimport),这样就可以找到它。当您包含"math.h“-> "crtdefs.h”而不将_DLL设置为预指令时,变量将不会是__declspec(dllimport)'ed,并且在链接时会出现缺失。

我之所以会遇到这个问题,是因为我正在用我自己的定制makefile进行编译,而且我忽略了添加_DLL预指令。将-D_DLL添加到我的编译步骤解决了编译问题,无需进行其他更改。

我知道这条线很旧,但我想我会把它扔出去,因为它可能会帮助有类似问题的人。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8042607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档