私のC++コードをPythonでPythonに移植しようとしています。(Swig to python)インポートエラー:動的モジュールがinit関数を定義していません
Python(コマンドライン)でpy、pyd、cxx、libファイルをビルドすると、 "module Dnld"のキーが表示されます.->インポートエラー:動的モジュールでinit関数が定義されていません。 次は、さらに
私のコードです:マークTolonen
- ファイル - >新規作成 - >プロジェクト - > Windowsコンソールアプリケーション - >を選択DLLありがとう、誤解を避けるために、私のビルドステップを追加し、空のプロジェクト(ユニコードなし)
- 私のSerialCommフォルダをプロジェクトに追加します(DownloaderEngine.h Serial.h PortEnumerator.hなどを含みます)。
- の構成プロパティ - > C/C++ - >追加などがdirectories-> C:\ Python27 \が含ま
- の構成プロパティ - >リンカー - >一般 - >出力ファイル - > $(OUTDIR)\ Dnld.pyd
- の構成プロパティ - >リンカー - >入力 - >追加directories-を含める> C:\ Python27 \ LIBS \ python27.libと\ SERIALCOMM \
- setupapi.libカスタム
- DNLDを構築するか、Dnld.iを追加します。 >プロパティページ - >コマンドライン - > swig -C++ -python $(InputPath)
- Dnld.iプロパティページ - >出力 - > $(InputName)_warp.cpp
- ビルド、Dnld_wrap.cxx、Dnld.py
- がDnld.pydを作成し、それはそれだ
(的環境:VC2008でXP SP3)、すべてを再構築し、私のプロジェクトでDnld_wrap.cxxを追加作成
//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
こんにちは、mihai、私の英語は良くないです(台湾から来ています)。私の文法が間違っていれば、本当に残念です... :( – user1328842
Haveあなたはここを見ました:http://www.swig.org/Doc1.3/Python.html?31.2.5。 –