(Swig to python) ошибка импорта: динамический модуль не определяет функцию инициализации

Я пытаюсь портировать свой C++ код на python с помощью swig.

Когда я заканчиваю сборку файлов py, pyd, cxx и lib в Python (командная строка), я ввожу «модуль Dnld», он показывает-> ошибка импорта: динамический модуль не определяет функцию инициализации. Ниже приведен мой код,

Далее: Добавьте шаг сборки, чтобы избежать недоразумений, спасибо, Марк Толонен

  1. Файл->Создать->Проект->Консольное приложение Windows->Выберите DLL и пустой проект(без юникода)
  2. Добавьте мою папку SerialComm в проект (включая DownloaderEngine.h Serial.h PortEnumerator.h и т. д.).
  3. Свойства конфигурации->c/c++->Дополнительные включаемые каталоги->C:\Python27\include
  4. Свойства конфигурации->Компоновщик->Общие->Выходной файл->$(OutDir)\Dnld.pyd
  5. Свойства конфигурации->Компоновщик->Ввод->Дополнительные включаемые каталоги->C:\Python27\libs\python27.lib и .\SerialComm\setupapi.lib
  6. Добавьте Dnld.i , выполните пользовательскую сборку
  7. Dnld. Страница свойств i->Командная строка->swig -c++ -python $(InputPath)
  8. Страница свойств Dnld.i->Output->$(InputName)_warp.cpp
  9. сборка, создание Dnld_wrap.cxx, Dnld. py
  10. Добавьте Dnld_wrap.cxx в мой проект, перестройте все, создайте Dnld.pyd, вот и все

(Среда: XP SP3 с VC2008)

//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"
5
задан Garrett 14 June 2014 в 09:05
поделиться