- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个关于如何链接 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?另外,有没有其他人遇到 Unresolved _HUGE 错误,有没有人知道如何修复它?
感谢您阅读这个冗长的问题并提出任何想法。
最佳答案
我在使用 VC11.0 时遇到过这个问题。我得到的唯一错误是未解析的符号 _HUGE 错误。
我正在链接动态多线程运行时库,我发现如果我在链接步骤中包含“libcmt.lib”,问题就会得到解决(或解决)。
我开始研究如何在 SDK 中定义 header 以寻找线索,发现我在编译步骤中缺少编译器预目录:_DLL。
当您使用动态运行时库构建时,_HUGE 变量需要是 __declspec(dllimport) 以便可以找到它。当您包含“math.h”->“crtdefs.h”而没有将 _DLL 设置为前置指令时,该变量将不会被 __declspec(dllimport) 编辑,并且会在链接时显示为丢失。
我遇到这个问题是因为我正在使用我自己的自定义 makefile 进行编译并且我忽略了添加 _DLL 前置指令。在我的编译步骤中添加 -D_DLL 解决了编译问题,无需进行其他更改。
我知道这个帖子很旧,但我想我会把它扔在那里,因为它可能会帮助遇到类似问题的人。
关于c++ - _HUGE 和 __IMP__HUGE 在 "math.h",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8042607/
我有一个关于如何链接 math.h 中定义的常量的问题。 在 visual studio 2010 中,我正在构建一个带有“MD”的 64 位 dll c++ 库,该库使用使用“HUGE_VAL”的第
当我修改完一些东西时出现错误。我也已经在这里搜索过,但是这个错误是不同的,因为它是 LUA 这是我得到的错误 Error 17 error LNK2019: unresolved external s
我是一名优秀的程序员,十分优秀!