目前 Swig D 绑定使用以下符号libfun
:
mixin(bindCode("libfun", "D_libfun"));
extern(C) int function(void* jarg1) libfun;
其中D_libfun
符号在编译为库的 cxx 包装器中定义。因此,符号libfun
导出为extern(C)
并具有全局范围。我遇到了符号与现有extern(C)
符号(例如读取)发生冲突的情况,导致我追溯到这个 swig 文件的模糊运行时崩溃。
有没有办法:
- 避免引入 extern(C) 中间声明
- 或者,为这些符号添加用户指定的前缀或后缀(例如:)
extern(C) mylib_libfun
,并在主包装器 d 文件和辅助包装器 d 文件中反映这一点。
现在我需要在这些文件上运行一个繁琐的后处理器,这很脆弱。