Swig csclassmodifiers 不适用于 C 函数的 Module 类
Posted
技术标签:
【中文标题】Swig csclassmodifiers 不适用于 C 函数的 Module 类【英文标题】:Swig csclassmodifiers does not work on Module class for C functions 【发布时间】:2016-10-26 16:09:36 【问题描述】:我正在尝试围绕TA-Lib(一个流行的开源技术指标库)生成一个 C# SWIG 包装器。
TA-Lib 代码是 C 代码(extern "C" 函数的集合),因此,Swig 会生成这样的类:
// where ModuleName is specified as %module "ModuleName"
// where SomeCFunc is an extern "C" function in the target C dll
public class ModuleName
public void SomeCFunc(...)
但是。我需要将我的类 ModuleName 定义为 public unsafe partial。过去我使用过csclassmodifiers,例如
%typemap(csclassmodifiers) ModuleName "public unsafe partial class"
这应该将类生成为public unsafe partial
,但在这种情况下它不起作用,因为该类是根据模块名称生成的——我本身并没有包装 C++ 类。
有什么想法吗?
【问题讨论】:
【参考方案1】:我刚发帖,我就发现了如何做到这一点(尽管花了一天的时间!)#RubberDuckCoding
所以解决方案是在你的 *.i Swig 接口文件中指定 moduleclassmodifiers
%pragma(csharp) moduleclassmodifiers="public unsafe partial class"
输出模块类现在生成为
// where ModuleName is specified as %module "ModuleName"
// where SomeCFunc is an extern "C" function in the target C dll
public unsafe partial class ModuleName
public void SomeCFunc(...)
【讨论】:
以上是关于Swig csclassmodifiers 不适用于 C 函数的 Module 类的主要内容,如果未能解决你的问题,请参考以下文章
swig 和使用 Visual Studio 2017 命令行构建项目