gpt4 book ai didi

python - SWIG 一般问题

转载 作者:太空宇宙 更新时间:2023-11-04 13:11:08 26 4
gpt4 key购买 nike

我正在学习 SWIG,我正在尝试了解一些 C++ 可能的情况,这些情况我在查看文档和示例后无法弄清楚,这是我的内容:

用例1.h

#ifndef __USECASE1_H__
#define __USECASE1_H__

namespace foo_namespace {
int usecase1_f1( float b, float c, float *res );
}

#endif

用例1.cpp

int usecase1_f1( float b, float c, float *res )
{
return 1;
}

用例2.h

#ifndef __USECASE2_H__
#define __USECASE2_H__

extern double usecase2_v1;

int usecase2_f1(int n);
char *usecase2_f2();

#endif

用例2.cpp

#include <time.h>

double usecase2_v1 = 3.0;

int usecase2_f1(int n) {
if (n <= 1) return 1;
else return n * usecase2_f1(n - 1);
}

char *usecase2_f2()
{
time_t ltime;
time(&ltime);
return ctime(&ltime);
}

用例3.h

#ifndef __USECASE3_h__
#define __USECASE3_h__

#include <math.h>

namespace foo_namespace {
static inline float usecase3_f1( float x )
{
return 31.0f;
}
}

#endif

example1_working.i

%module example

%{
int usecase1_f1( float b, float c, float *res );
#include "usecase2.h"
%}

int usecase1_f1( float b, float c, float *res );

%include "usecase2.h"

example2_not_working.i

%module example

%{
#include "usecase1.h"
#include "usecase2.h"
%}

%include "usecase1.h"
%include "usecase2.h"

问题

  • 像在 example1_working.i 中那样显式声明命名空间函数是可行的,但我想改用 header ,swig 似乎搞砸了命名空间,有什么解决方法吗?
  • 如何在 swig 文件 (usecase3.h) 中包装声明为静态内联的命名空间函数?

最佳答案

确保在运行时将 -c++ 传递给 swig,默认情况下不启用 C++ 支持。有关包装 C++ 的更多详细信息,请参见此处 - http://www.swig.org/Doc1.3/SWIGPlus.html

关于python - SWIG 一般问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39856524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com