使用CMake创建VS项目后的rint()问题

使用CMake创建VS项目后的rint()问题,c,visual-c++,cmake,c99,cmake-gui,C,Visual C++,Cmake,C99,Cmake Gui,我在编译代码时遇到了一个问题——特别是 我通过两种方式成功地利用源文件制作了Visual Studio 2013项目:使用CMake GUI(3.4.3版)和使用命令行 但是,在这两种情况下,当我尝试在Visual Studio中构建创建的项目时,我都会遇到一个错误:error C2059:syntax error:'(“联机 _CRTIMP double __cdecl rint(_In_ double _X); 其中\u CRTIMP的定义如下: #define _CRTIMP __dec

我在编译代码时遇到了一个问题——特别是

我通过两种方式成功地利用源文件制作了Visual Studio 2013项目:使用CMake GUI(3.4.3版)和使用命令行

但是,在这两种情况下,当我尝试在Visual Studio中构建创建的项目时,我都会遇到一个错误:
error C2059:syntax error:'(“
联机

_CRTIMP double __cdecl rint(_In_ double _X);
其中
\u CRTIMP
的定义如下:

#define _CRTIMP __declspec(dllimport)

这个问题是由CMake在创建Visual Studio项目的过程中引起的,还是在METIS的源文件中引起的?

转到:METIS\GKlib\gk_arch.h和metisbin.h和metislib.h。删除或重命名#define rint(x)((idx_t)((x)+0.5))它导致与math.h.中的rint函数冲突。

转到:metis\GKlib\gk_arch.h和metisbin.h和metislib.h.删除或重命名#define rint(x)((idx_t)((x)+0.5))它导致与math.h.中的rint函数冲突。

只注释掉行
#define rint(x)((idx#t)((x)+0.5))
在metis\GKlib\gk_arch.h中就足够了。

只注释掉行
#定义rint(x)((idx_t)((x)+0.5))
在metis\GKlib\gk_arch.h中就足够了。

Hm,搜索metis源代码怎么样?我试图搜索源代码,但没有找到可能的错误。我不明白,为什么会出现问题(“在上面提到的行中,.macro
\u CRTIMP
在整个文件中被多次使用,
rint()
是默认函数,定义为
\define rint(x)((int)((x)+0.5))
我不知道,这确实是暗中刺痛,但请注意VS,尤其是在旧版本中,根本不兼容C99。@t.Brown好吧,如果
rint(x)
确实是一个宏,那么它当然不会编译…预处理器将给定的行扩展为:
\u declspec(dllimport)double\u cdecl((int)((((_In_uuux)+0.5))VisualC++是一个C++编译器,你可能需要一个C编译器来编译C。我还试着用Visual C++之前编译标准C或GNU C,在经历了很多挫折之后放弃了。祝你好运。HM,搜索MITIS源代码怎么样?我试图通过源代码搜索,但我做到了。无法找到可能的错误。我不明白,为什么上面提到的行上的“(”会有问题。宏
\u CRTIMP
在整个文件中使用了很多次,并且
rint()
是定义为
\define rint(x)((int)((x)+0.5)的默认函数
我不知道,这确实是暗中刺痛,但请注意VS,尤其是在旧版本中,根本不兼容C99。@t.Brown好吧,如果
rint(x)
确实是一个宏,那么它当然不会编译…预处理器将给定的行扩展为:
\u declspec(dllimport)double\u cdecl((int)((iNi双x)+0.5);也,如MARCUS所述,VisualC++是C++编译器。你可能需要一个C编译器来编译C。我还试着用Visual C++之前编译标准C或GNU C,在经历了很多挫折之后放弃了。祝你好运。