【发布时间】:2016-06-04 09:08:16
【问题描述】:
我在编译代码时遇到问题 - 特别是 METIS - Serial Graph Partitioning and Fill-reducing Matrix Ordering。
我已经成功地通过两种方式从源文件中制作了 Visual Studio 2013 项目:使用 CMake GUI(版本 3.4.3)和使用命令行。
但是,在这两种情况下,当我尝试在 Visual Studio 中构建创建的项目时,我都会收到错误消息:Error C2059: syntax error : '(' on line
_CRTIMP double __cdecl rint(_In_ double _X);
_CRTIMP 是这样定义的:
#define _CRTIMP __declspec(dllimport)
这个问题是CMake创建Visual Studio Project的过程中引起的,还是METIS源文件的问题?
【问题讨论】:
-
嗯,搜索一下metis源码呢?
-
我试图搜索源代码,但没有找到可能的错误。我不明白,为什么提到的行上的“(”可能有问题。宏
_CRTIMP在整个文件中被多次使用,rint()是默认函数,定义为#define rint(x) ((int)((x)+0.5)) -
我不知道,这确实是在黑暗中刺伤,但请注意 VS,尤其是在旧版本中,根本不兼容 C99。
-
@T.Brown 好吧,如果
rint(x)真的是一个宏,那么它当然不会编译...给定的行被预处理器扩展为:__declspec(dllimport) double __cdecl ((int)((_In_ double _X)+0.5)); -
另外,正如 Marcus 所说,VisualC++ 是一个 C++ 编译器。您可能需要一个 C 编译器来编译 C 。我之前也尝试过使用 Visual C++ 编译标准 C 或 GNU C,但在经历了很多挫折后放弃了。祝你好运。
标签: c visual-c++ cmake c99 cmake-gui