c++到Python的SWIG -程序停止工作后,导入pyd库
C++ to Python with SWIG - Program stop working after import pyd library
早上好,有人能帮我一下吗?我绝望了。
我创建了一个将c++类迁移到python的基本示例。我已经成功地从c++ -> JAVA转换,但现在我需要它在Python。我是在Windows 8上的Visual Studio 2010上做的(也在Windows 7 32位上尝试过)。一切正常,.py生成了,.pyd也生成了,但是当我运行python程序时,它崩溃了。它写程序停止工作(经典的窗口窗口)。我发现它在加载库的时候崩溃了。是这一行:_mod = imp.load_module('_KatanaWrapper', fp, pathname, description)
但是这整个文件是从SWIG生成的,所以我不认为有什么问题。一定是跟SWIG有关吧?有人知道吗?
我的做法与这里的描述相似
这是我的c++代码。还好……它是如此的简单,并在c++中工作。Test.h
#pragma once
class Test
{
public:
Test(void);
~Test(void);
int mySum(int first, int second);
};
Test.c
#include "Test.h"
Test::Test(void)
{
}
int Test::mySum(int first,int second) {
return first + second;
}
Test::~Test(void)
{
}
编辑:这是我的界面文件(没什么特别的):
/* File : translate.i */
%module KatanaWrapper
%{
/* Includes the header in the wrapper code */
#include "Test.h"
%}
/* Parse the header file to generate wrappers */
%include "Test.h"
和这个的命令行:
$(SolutionDir)..swigswig.exe -c++ -python %(FullPath)
有趣的是,当我把这个命令改为
$(SolutionDir)..swigswig.exe -c++ -java %(FullPath)
它必须写生成的类包(包testapplication;),但它仍然不工作(java崩溃),但当我改变命令像这样:
$(SolutionDir)..swigswig.exe -c++ -java -package testapplication %(FullPath)
它工作!在PYTHON中有类似的东西吗?能帮上忙吗?
这是vs生成的编译器选项。它有点混乱,也有Java包含(用于Java迁移)
/I"C:Program Files (x86)Javajdk1.7.0_17includewin32" /I"C:Program Files (x86)Javajdk1.7.0_17include" /I"C:Python27include" /I"C:Python33include" /Zi /nologo /W3 /WX- /O2 /Oi /Oy- /GL /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "KATANAWRAPPER_EXPORTS" /D "_WINDLL" /D "_UNICODE" /D "UNICODE" /Gm- /EHsc /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fp"Release_KatanaWrapper.pch" /Fa"Release" /Fo"Release" /Fd"Releasevc100.pdb" /Gd /analyze- /errorReport:queue
------------ 解决了 ------------
嗯,我找到我的问题所在了。我用这种语法在链接器->输入->附加依赖中包含了python库文件夹(必要的.):
C:Python33libs*.*
当我用这种语法把它放入vc++目录->库目录时:
C:Python33libs
它突然起作用了。我不理解差异,但它起作用了,而且很重要。不好意思。
相关文章:
- 尝试导入pybind-opencv模块时出现libgtk错误
- 导入库可以跨dll版本工作吗
- 建议在运行时将带有类实例的列表从c++导入qml
- 导入/导出变量时出错
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 将QT项目导入Visual Studio 2019会给我带来很多LNK2001错误
- 是否可以将函数导入命名空间,但不能导出它?
- 如何将 CLion C++ 项目导入 Visual Studio?
- Python 3.8 不能与 Pybind11 一起导入 [Windows]
- 无法将标准库导入本机 android 项目中的头文件
- 尝试了解在导入的静态方法上使用删除方法时的错误
- 在 python 模块中导入子模块时PyImport_Import失败
- 将 C# DLL 导入 C++ 以用于 JNI
- 使用 QSslCertificate 在 Qt 中正确导入 pkcs12
- 在从Qt调用的Python脚本中导入OpenCV崩溃
- 编译boost_python扩展无法在 python 2.7 中导入
- 如何在安卓工作室中将c ++头文件从一个文件夹导入到另一个文件夹?
- Dll在同一解决方案中从 c# 项目导入到 c++ 项目
- C++20 使用 Visual Studio 编译模块:不编译或导入 ixx 文件
- c++到Python的SWIG -程序停止工作后,导入pyd库