G ++ math.h问题

时间:2010-12-13 04:27:36

标签: math include g++

我希望有人也遇到过这个问题。

我正在尝试使用visual studio为使用G ++的Linux开发。

我正在尝试包含math.h并使用tanf()

如果我使用g ++编译器编译,“arm-none-linux-gnueabi-g ++”,一切正常

但如果我添加这个包含目录,文档说的是正确的目录,并且 “CodeSourcery \ Sourcery G ++ Lite \ arm-none-linux-gnueabi \ libc \ usr \ include \” 然后包括math.h,

visual studio无法识别任何数学函数,即tanf()。

任何人都知道为什么?

感谢您的帮助。

编辑: 同一个应用程序使用此命令行成功编译:
arm-none-linux-gnueabi-g ++ -o test main.cpp“-I%PALMPDK%\ include”“ - I%PALMPDK%\ include \ SDL”“ - L%PALMPDK%\ device \ lib”-Wl, - -allow-shlib-undefined -lSDL -lGLESv2 -lpdl

4 个答案:

答案 0 :(得分:1)

  

我正在尝试使用visual studio为使用G ++的Linux开发。

别。

看起来您正在尝试使用交叉编译器来构建嵌入式ARM计算机。可能,您将无法仅使用编译器 - 您需要一个完整的根环境才能链接到除libc以外的任何东西。 Visual Studio,虽然是一个很好的IDE,但实际上无法塑造成这个角色。你真的需要一个真正的Linux机器,你需要相应的root环境(无论是自己开发的,buildroot,openembedded等)。

答案 1 :(得分:1)

1)在C ++中,您包括<cmath>,而不是math.h

2)在C ++中,你使用带有浮点数的tan(有一个重载),而不是tanf

答案 2 :(得分:0)

我猜想Visual Studio会看到<math.h>,并且认为必须引用Microsoft数学标题(这基本上是antediluvian并且不支持C99细节,例如tanf)。这只是猜测,因为你还没有发布你遇到的实际错误;当你说“视觉工作室不识别任何数学函数”时,你究竟是什么意思?它编译失败了吗?要链接?错误消息的确切文本是什么?传递给编译器或链接器的确切选项是什么?

答案 3 :(得分:0)

我找到了解决方案!

我下载并安装了MinGW,这很好用。我有所有函数原型用于gettimeofday()之类的额外内容,并且像tanf()这样的常规后缀仍然可以正常工作。

ps:visual studio甚至还有一个“使用输出窗口”的按钮,它可以很好地转储由“arm-none-linux-gnueabi-g ++”生成的任何错误