繁体   English   中英

SWIG C ++预编译DLL

[英]SWIG C++ Precompiled DLL

我有一个用C ++编写的第三方DLL(没有头文件),我可以从开发人员那里获得函数原型信息,但它是专有的,他不会提供源代码。

我已经完成了SWIG教程,但我找不到任何指定如何使用SWIG访问任何只有DLL文件的函数的地方。 教程中的所有内容都表明我需要有标题,以便SWIG知道函数原型的样子。

SWIG是在这种情况下使用的正确途径吗? 我试图在Python中加载此DLL,以便我可以使用一个函数。 从我的所有研究来看,看起来Python的ctypes不能与C ++ DLL文件一起使用,我试图找到最好的路径来执行此操作。 Boost.python似乎需要更改底层C ++代码以使其与Python一起使用。

总而言之,当我知道函数原型但没有头文件或源代码时,有没有办法使用SWIG?

即使没有头文件,如果您有原型,也可以自己创建头文件,或者直接在SWIG界面文件中输入原型。

例如,如果原型是:

int sum(const std::vector<int>& vint);

SWIG界面将是:

%module example
%{
    #include <vector>
%}
%include <std_vector.i>                # SWIG support
%template() std::vector<int>;          # Generate code to support template instance.

int sum(const std::vector<int>& vint); # Generate wrapper for function.

要使用库(静态或动态),您需要标头和库文件.a,.lib ...

对于c ++来说它是真的,我认为对于Python也是如此

没有头文件,不能使用SWIG。 你唯一的选择是类似ctypes的lib。 如果你发现ctypes没有为你做,你找不到替代方案然后发一个问题,为什么ctypes在你的情况下不可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM