使用Visual Studio 2010编译C库

我在这里找到了一个由其他人编写的C库,以非常好的方式在Mac上编译它并生成一个ruby包装器。

我在Windows上,我需要为.Net生成一个包装器。 我对C或C ++一无所知。

  • 我创建了一个只%include .h文件的.i文件,并使用Swig生成C#文件和xxx_wrapper.c文件。
  • 我用Visual Studio 2010创建了一个空的C ++项目,并包含了项目的所有.h.c文件(生成ruby包装器的文件除外)
  • 现在,当我尝试编译时,每次有内联函数时都会出现一些编译错误:

    file.c(54): error C2054: '(' expected after 'inline'
    file.c(54): error C2085: 'swap_img' : is not in the formal parameters list
    file.c(54): error C2143: syntax error: missing ';' before '{'

我在这里读到可能是因为VS尝试将我的c文件编译为c ++。 但是我该怎么做? 我无法改变代码中的任何内容(我不会尝试),所以我只需要“修复”项目。

谢谢 !

在Visual Studio 2010支持的C语言版本中,没有inline单词。 只有C ++有inline 。 我不认为inline成为C的一部分,直到最新版本的C标准(C11),没有人支持。

相反,你应该使用单词__inline ,这意味着同样的事情。 下划线暗示这是一个“扩展”,这不是标准C的一部分。

或者,您可以在每个文件的开头放置#define inline __inline ,或者在开头的#include d中放入.h头文件。 这会在每次出现时自动将inline单词转换为__inline

(编写该代码的人可能正在使用不同的编译器,选择在没有下划线的情况下添加inline编译器。它仍然是“扩展”,因为它不是标准C的一部分。)