我想通过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