Python 奇怪的C++;头文件函数声明

Python 奇怪的C++;头文件函数声明,python,function,c++11,header,swig,Python,Function,C++11,Header,Swig,当我尝试swig-c++-python我的接口时,我正在阅读一些试图编译成python绑定的源代码 我知道源代码是用C++11编写的 //module.hpp #布拉格语一次 名称空间模块 { 模块API无效版本(未签名和参数); } 我没有访问源文件的权限,只有标题和一个共享库,我们可以称之为modulelib.so 有人知道函数返回类型之前的模块API是什么意思吗 当我现在尝试编译时,我得到了错误模块。hpp:29:error:Syntax error in input(1) 当我删除MO

当我尝试
swig-c++-python我的接口时,我正在阅读一些试图编译成python绑定的源代码

我知道源代码是用C++11编写的

//module.hpp
#布拉格语一次
名称空间模块
{
模块API无效版本(未签名和参数);
}
我没有访问源文件的权限,只有标题和一个共享库,我们可以称之为
modulelib.so

有人知道函数返回类型之前的
模块API
是什么意思吗

当我现在尝试编译时,我得到了错误
模块。hpp:29:error:Syntax error in input(1)
当我删除
MODULE\u API
时,输出会移动到下一个函数声明,因为它们都有这种类型的声明,我会将它们全部删除,但我觉得这会破坏一些东西

现在,当我运行
swig-v-wall-c++-python my_接口时,我收到一个错误:

Language subdirectory: python
Search paths:
   ./
   ./swig_lib/python/
   /usr/share/swig3.0/python/
   ./swig_lib/
   /usr/share/swig3.0/
Preprocessing...
Starting language-specific parse...
module.hpp:6: Error: Syntax error in input(1).

这是处理符号可见性的常用模式。例如,Windows要求您在编译库时使用
\u declspec(dllexport)
定义函数(以便链接器知道如何使相应的符号在外部可见),在使用/链接库时使用
\u declspec(dlliport)
定义函数(以便链接器知道这些符号将从DLL导入)

为了避免必须有两个不同的头(一个用于编译,一个用于使用库),使用了条件定义:

#ifdef WIN32

  #ifdef MODULE_EXPORTS
    #define MODULE_API __declspec(dllexport)
  #else
    #define MODULE_API __declspec(dllimport)
  #endif

#else
  #define MODULE_API
#endif

这只是一个例子。它根本不必是
模块API
。一些项目使用GCC的
\uuuuu属性(可见性(“默认”))
\uuuu属性(可见性(“隐藏”))
,但Windows是此方案的发源地,因为Windows的默认设置是隐藏符号。

这是处理符号可见性的常见模式。例如,Windows要求您在编译库时使用
\u declspec(dllexport)
定义函数(以便链接器知道如何使相应的符号在外部可见),在使用/链接库时使用
\u declspec(dlliport)
定义函数(以便链接器知道这些符号将从DLL导入)

为了避免必须有两个不同的头(一个用于编译,一个用于使用库),使用了条件定义:

#ifdef WIN32

  #ifdef MODULE_EXPORTS
    #define MODULE_API __declspec(dllexport)
  #else
    #define MODULE_API __declspec(dllimport)
  #endif

#else
  #define MODULE_API
#endif

这只是一个例子。它根本不必是
模块API
。一些项目使用GCC的
\uuuu属性(可见性(“默认”))
\uuu属性(可见性(“隐藏”))
,但Windows是这个方案的起源,因为Windows的默认设置是隐藏符号。

我回答了
模块API
,但我不能真正说出编译器错误的原因,因为您只发布了部分错误消息。也许你能想出一个答案吗?你肯定回答了我的问题,我不知道其中的任何一个是什么,所以我试图尽可能多地包含信息。我会看看是否能举个例子我会继续接受答案,因为你确实回答了我的问题,谢谢,但是如果你想继续帮助我,我会非常感激。老实说,如果你把它作为一个新问题发布,我想你会得到最好的服务。没关系,我一定义
MODULE\u API
就回答了有关
MODULE\u API
的错误,但我真的说不出编译器错误是关于什么的,因为您只发布了部分错误消息。也许你能想出一个答案吗?你肯定回答了我的问题,我不知道其中的任何一个是什么,所以我试图尽可能多地包含信息。我会看看是否能举个例子我会继续接受答案,因为你确实回答了我的问题,谢谢,但是如果你想继续帮助我,我会非常感激。老实说,如果你把它作为一个新问题发布,我想你会得到最好的服务。没关系,我一定义
MODULE\u API
错误就解决了,他们一定把这个放进去了,因为他们是在Windows机器上编译的,因为我使用的是linux,所以我所要做的就是在文件顶部添加
#define MODULE\u API
,然后它就应该编译了!他们一定是把这个放进去了,因为他们是在Windows机器上编译的,因为我使用的是linux,所以我所要做的就是在文件的顶部添加
#define MODULE_API
,然后它就应该编译了!