gpt4 book ai didi

c++ - C/C++ 不透明指针库

转载 作者:太空狗 更新时间:2023-10-29 21:08:36 30 4
gpt4 key购买 nike

是否已经编写了库/头文件来使用不透明的指针/句柄从 C 管理 C++ 对象?

我可以自己写一个,但我宁愿使用已经做好的解决方案,尤其是如果它有 Fortran 绑定(bind)的话。

我的具体要求是:

  • 包装器生成工具(我的想法是使用 boost 预处理器)
  • 通过整数(而不是原始指针)句柄 (à la mpi) 处理对象以提供句柄验证和特殊值以及 64 位 fortran 的一些可移植性。

谢谢

最佳答案

在C++中,简单的提供函数

Foo foo; // C++ object we want to access

Foo &foo_factory(); // C++ function we want to call

extern "C" void * get_foo() // extern "C" so C can call function
{ return (void *) & foo; } // cast it to an opaque void * so C can use it

extern "C" void * create_foo()
{ return (void *) & foo_factory(); }

和一个 C 头文件

extern void * get_foo();
extern void * create_foo();

适当的访问器与转换为 void* 应该是你所需要的。

您的 Fortran 编译器可能与 extern "C" 兼容(特别是如果它与 C 静态库兼容)或者您的 C++ 编译器可能具有 extern "Fortran"。请参阅他们的手册。

您或许可以找到一个代码生成器来为您完成这项工作。如果可以,手动操作当然更安全。

关于c++ - C/C++ 不透明指针库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2709311/

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