Я сейчас настраиваю интерфейс Python-C SWIG. Я уже получил его для создания файла общего объекта с помощью следующих команд:
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;
Когда я пытаюсь вызвать мою программу, в командной строке я делаю следующее:
питон
import myFile3
myFile3.myFuncInit () * * тысяча двадцать-одна
myFile3.myFuncWrite ("ABCD", "ABCDEFGHI", 8); // <= <strong>Я получаю сообщение об ошибке при вводе этой строки.
где параметры myFuncWrite (char * param1, const BYTE * param2, WORD param3)
Я полагаю, что проблема заключается в том, что это постоянный указатель BYTE. Я не уверен, что мне нужно сделать какую-нибудь простую вспомогательную функцию или карту типов, чтобы она прошла правильно. На самом деле, я застреваю здесь и не знаю, что мне нужно сделать, чтобы понять, что я просто передаю указатель на typedef BYTE.