gpt4 book ai didi

c# - 如何更改 SWIG 生成的 CSHARP 文件中的构造函数代码

转载 作者:搜寻专家 更新时间:2023-10-31 02:23:55 31 4
gpt4 key购买 nike

我有一个 C++ DLL,我已使用 SWIG 工具为其生成了 C# 代码。中间类在PINVOKE.cs文件中有如下方法(假设模块名为MyModule):

static MyModulePINVOKE() 
{
...
}

我想执行模块初始化,这可以在 SWIG 中使用 %init% 关键字完成,但该关键字不适用于 C#。 See the following post for details .我按照帖子中的说明进行操作并能够做我想做的事,但我希望我的代码在 PINVOKE 类构造函数中运行,因此我正在寻找一种将代码插入构造函数的方法。

用 Google 搜索并找到了 csconstruct 关键字,但不确定如何使用它。以下代码段没有给出预期的结果。任何想法这里可能有什么问题:

%typemap(csconstruct, excode=SWIGEXCODE) SWIGTYPE
%{
...
%}

最佳答案

好的。解决方案是在 SWIG 命令行中定义 SWIG_CSHARP_NO_IMCLASS_STATIC_CONSTRUCTOR 预处理器:

SWIG.EXE -Wall -DSWIG_CSHARP_NO_IMCLASS_STATIC_CONSTRUCTOR -c++ -csharp ...  

这将告诉 SWIG 不要在中间类中生成默认静态构造函数。然后在 SWIG 接口(interface)文件中使用以下代码添加自定义构造函数:

%pragma(csharp) imclasscode=%{
static $imclassname()
{
... // do something for initialization
}
%}

关于c# - 如何更改 SWIG 生成的 CSHARP 文件中的构造函数代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28718453/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com