Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Swig C++;目标语言(从C+;+;到C+;+;代理类)_C++_Dll_Swig - Fatal编程技术网

C++ Swig C++;目标语言(从C+;+;到C+;+;代理类)

C++ Swig C++;目标语言(从C+;+;到C+;+;代理类),c++,dll,swig,C++,Dll,Swig,我正在考虑将大型库的某些功能包装到SDK中。我在将一些类从C++库中封装到其他语言(例如Python、C和D)中取得了一些成功,但是我无法理解如何用C++来实现。 另外,我想让SWIG自动生成C++目标的C++代理类(参见),这样我就可以只使用一个DLL文件和一些使用DLL的简化C++文件。释放底层C++库是不可行的。有什么想法吗 编辑:根据Jens Munk的建议,Swig有一个Google代码汇总(GSoC)2008分支,允许将“c”设置为目标语言。还有另一个GSoC 2012版本,允许设置

我正在考虑将大型库的某些功能包装到SDK中。我在将一些类从C++库中封装到其他语言(例如Python、C和D)中取得了一些成功,但是我无法理解如何用C++来实现。

另外,我想让SWIG自动生成C++目标的C++代理类(参见),这样我就可以只使用一个DLL文件和一些使用DLL的简化C++文件。释放底层C++库是不可行的。有什么想法吗

编辑:根据Jens Munk的建议,Swig有一个Google代码汇总(GSoC)2008分支,允许将“c”设置为目标语言。还有另一个GSoC 2012版本,允许设置Objective-C目标。但是,所有这些版本都没有合并到官方版本中,因此需要从头开始构建它们,并且它们包含许多恼人的问题。据我所知,没有一个好的选择,可以通过SWIG自动生成代理C++类。 附加材料:


<>从不同编译器< /p> HMM,为什么要为C++提供代理类?现在已经有了头系统,它允许在不知道函数实现细节(即dll中的内容)的情况下调用函数。SWIG的开发版本是在代码GSoC的Google Summer期间开发的,它可以完全满足您的需要。您告诉SWIG目标语言是C。该接口成为面向对象的C,并与多个编译器兼容,即您可以使用使用不同编译器生成的二进制文件。我自己使用它,我已经设法编译和测试了所有这些“非官方”版本的Swig。然而,我的问题并没有完全解决,因为(1)带有“c”目标的旧GSoC Swig包含粗略的编程错误(带返回的无效函数、错误的导入指令、无用的代码块、实际上是java目标文件副本的swg文件,等等)(2)此工具的结果(即使在修复所有这些错误之后)是一个C样式包装,它仍然意味着库的用户需要为构建和销毁类API调用,而我需要的是代理C++类…