gpt4 book ai didi

python - 如何将 typedef 变量的指针实现到 SWIG 中?类型 'BYTE const *' 错误的参数 2

转载 作者:太空宇宙 更新时间:2023-11-04 01:39:39 24 4
gpt4 key购买 nike

我现在正在设置一个 Python-C SWIG 接口(interface)。我已经通过以下命令生成共享对象文件:

swig -python myFile.i

gcc -c myFile.c myFile2.c myFile3.c myFile_wrap.c -IC:\myincludedirectory\include

gcc -shared myFile.o myFile2.o myFile3.o myFile_wrap.o -Ic:\myincludedirectory\libs -lpython27 -o _myfile3.o

在 myFile.i 中,我有:

/*  myFile3 */
%module myFile3

%{
#include "myFile.h"
#include "defs.h"
#include "myFile2.h"
#include "myFile3.h"

%}
%include "defs.h"
%include "myFile.h"
%include "myFile2.h"
%include "myFile3.h"

defs.h 包含以下几行(除其他外):

typedef unsigned int BOOL;
typedef unsigned short WORD; //Word is 2 bytes but int* is 4 bytes ??
typedef unsigned int DWORD;
typedef unsigned long long QWORD;
typedef unsigned char BYTE;

当我尝试调用我的程序时,我在命令提示符下执行以下操作:

python

导入我的文件3

myFile3.myFuncInit()

myFile3.myFuncWrite ("ABCD", "ABCDEFGHI", 8);//<= 当我输入这一行时出现错误。

myFuncWrite 的参数是 (char *param1, const BYTE *param2, WORD param3)

我认为问题在于它是一个 const BYTE 指针。我不确定我是否需要做一些简单的辅助函数或类型映射来让它正确通过。事实上,我一直卡在这里,我不知道我应该怎么做才能让我明白我只是在传递 BYTE 的 typedef 指针。

最佳答案

在 %include "defs.h 行之后,尝试添加这一行:

%apply char* {BYTE*};

这会将所有 char* 类型映射(包括类型检查)应用于 BYTE*。有关更多信息,请阅读 SWIG 手册的以下部分:

http://www.swig.org/Doc2.0/Typemaps.html#Typemaps_nn6

关于python - 如何将 typedef 变量的指针实现到 SWIG 中?类型 'BYTE const *' 错误的参数 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6416377/

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