我想通過swig將我的C++代碼移植到python。(Swig to python)導入錯誤:動態模塊沒有定義初始化函數
當我在Python(命令行)下建立py,pyd,cxx和lib文件時,我輸入「module Dnld」,它顯示 - >導入錯誤:動態模塊沒有定義初始化函數。 以下是我的代碼,
另外:我添加構建步驟,以避免誤解,謝謝你馬克Tolonen
- 文件 - >新建 - >項目 - > Windows控制檯應用程序 - >選擇DLL和空項目(無Unicode)
- 將我的SerialComm文件夾添加到項目(包括DownloaderEngine.h Serial.h PortEnumerator.h等)。
- 配置屬性 - >的C/C++ - >額外包括directories-> C:\ Python27 \包括
- 配置屬性 - >連接器 - >通用>輸出文件 - > $(OUTDIR)\ Dnld.pyd
- 配置屬性 - >連接器 - >輸入 - >附加包含directories-> C:\ Python27 \庫\ python27.lib和\ SERIALCOMM \ setupapi.lib
- 添加Dnld.i,不要自定義生成
- Dnld。 i property page->命令行 - > swig -C++ -python $(InputPath)
- Dnld.i屬性頁面 - >輸出 - > $(InputName)_warp.cpp
- 建設,創建Dnld_wrap.cxx,Dnld.py
- 添加Dnld_wrap.cxx在我的項目,全部重建,創造Dnld.pyd,這就是它
(環境:與VC2008 XP SP3)
//DownloaderEngine.h
class __declspec(dllexport) CDownloaderEngine
{
public:
CDownloaderEngine();
virtual ~CDownloaderEngine();
signed char OpenPort(signed char _ucPort, unsigned long _ulBaudRate, unsigned char _ucParity,
unsigned char _ucStopBits,unsigned char _ucData);
....
};
//DownloaderEngine.cpp
CDownloaderEngine::CDownloaderEngine()
{
....
}
CDownloaderEngine::~CDownloaderEngine()
{
....
}
//DownloaderEngine.i
%module Dnld
%include <windows.i>
%include <std_vector.i>
%include <std_map.i>
%{
#define SWIG_FILE_WITH_INIT
#include ".\SerialComm\DownloaderEngine.h"
%}
/* Parse the header file to generate wrappers */
%include ".\SerialComm\DownloaderEngine.h"
+1爲「抱歉打擾」:) – mihai 2012-04-12 10:53:24
嗨,mihai,我的英文不太好(來自臺灣),如果我的語法不正確,我真的很抱歉呢...... :( – user1328842 2012-04-12 10:58:48
有你看這裏:http://www.swig.org/Doc1.3/Python.html?31.2.5。 – 2012-04-12 12:04:13