我希望有人也遇到过这个问题。
我正在尝试使用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
答案 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 ++”生成的任何错误