几个星期以来,我一直在尝试让Microsoft Visual Studio2010为我创建一个带有SWIG的DLL。如果你已经经历了这个过程,你能不能仔细地一步一步地解释一下?我在网上到处寻找,花了很多时间尝试这样做;但我找到的所有教程都过时了,或者解释得很糟糕。
我已经用cygwin成功地完成了这个过程;但正如你们中的一些人所知道的,cygwin DLL并不是很实用。
因此,我有了.i、.cpp和.h文件,我知道它们可以一起创建动态链接库。我只需要知道如何使用Visual Studio C++ 2010来做到这一点。我的目标语言是Python。
我阅读了所有相关的问题和答案,但我仍然没有找到我的问题的适当答案。
我使用的是python 3.6.5,pip(和setuptools)是最新的。我在这里安装了Microsoft Visual C++ Redistributable for Visual Studio2017:
需要 Microsoft Visual C++
PS:我想安装airflow
我下载了quantlib 1.14和quantlib 1.14-swig的tarbals。SWIG下的quantlib文件夹包含quantlib_wrap.cpp。但是安装程序会报错MSC版本。这是新的错误。这篇文章与关于缺少quantlib_wrap.cpp错误信息的相关。
C:\Users\Public\3rdParty\Libraries\QuantLib-1.14\ql/config.msvc.hpp(29) : fatal error C1189: #error : "versions of Visual C++ prior to VC++10 (2010) are no
使用SWIG为C++类生成一个包装器在运行时会导致一个奇怪的断言:
Assertion failed!
Program: C:\Python37\python37_d.dll
File: c:\_work\4\s\objects\typeobject.c
Line: 3634
Expression: PyTuple_Check(args)
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts
(Press Retry
我试图在Python中导入一个C++类。我知道我可以使用BoostPython、SWIG或Cython,但只是出于教学目的,我尝试用extern "C"手动导出C++方法和函数。简而言之,我正在尝试复制。
我的环境是Windows 10、Anaconda 3和Python 3.6。我已经将mingw64 4.8.3安装为C/C++编译器。
这是我的foo.cpp
#include <iostream>
// A simple class with a constuctor and some methods...
class Foo
{
public:
我刚刚开始使用ctypes,并且想使用我在python中使用ctypes导出到dll文件中的C++类。假设我的C++代码如下所示:
class MyClass {
public:
int test();
...
我知道创建一个包含这个类的.dll文件,然后使用ctype在python中加载这个.dll文件。现在,我如何创建一个MyClass类型的对象并调用它的测试函数?对于ctype,这是可能的吗?或者,我会考虑使用SWIG或Boost.Python,但对于小型项目来说,ctype似乎是最简单的选择。
我一直在尝试在我的项目中使用SWIG。我好像错过了什么。请帮帮忙。到目前为止,我基于本教程:所做的是:
1.使用Visual Studio创建Header.h头文件
class Test {
public:
Test();
~Test();
void showNumber();
private:
int number;
};
2.创建swig界面
/* File : Header.i */
%module Header
%{
#include "Header.h"
%}
/* Let's just grab the original h