2
我是Python C綁定swig的新手,一直在試圖解決這個問題。我有一個我想從Python調用的外部C庫(Example.c)。我閱讀Swig教程並能夠立即生成包裝器。現在的問題是,當我調用API,我得到了這一點:swig,python和wchar_t問題
>>> import Example
>>> dir(Example)
['Example_CreateConnection', 'trimmed to fit the screen']
>>> Example.Example_CreateConnection("")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: in method 'Example_CreateConnection', argument 1 of type 'ExampleChar const *'
這似乎是無法找到的類型ExampleChar
。以下是我痛飲文件:
%module Example
%{
#include "ExampleSDK.h"
%}
%include "ExampleTypes.h"
%include "ExampleSDK.h"
ExampleTypes.h看起來是這樣的:
#ifndef ExampleTypes_H
#define ExampleTypes_H
typedef wchar_t ExampleChar;
#endif /* ExampleTypes_H */
ExampleSDK.h看起來是這樣的:
#ifndef ExampleSDK_H
#define ExampleSDK_H
#include "ExampleTypes.h"
void Example_CreateConnection(const ExampleChar *temp);
#endif /* ExampleSDK_H */
下面是被調用的命令行生成包裝:
swig -python -I. Example.i
gcc -c Example.c -I/Developer/SDKs/MacOSX10.6.sdk/usr/include/
gcc -c Example_wrap.c -I/usr/include/python2.6 -I.
gcc -bundle -flat_namespace -undefined suppress -o _Example.so Example_wrap.o Example.o -L/usr/lib/python2.6/config/ -lpython2.6
這裏是Example.c的樣子:
#include "runetype.h" // for Mac wchar_t definition
#include "ExampleSDK.h"
void Example_CreateConnection(const ExampleChar *temp)
{
//do nothing
}
我不知道什麼是錯的。我希望有人能夠指出我在這裏完成的錯誤。謝謝。
問候,
傳林
感謝您的信息。由於前一段時間的截止日期,我已經轉到CType。我相信它的工作原理,我感謝您的幫助:) – chuan 2011-05-04 09:05:13