gpt4 book ai didi

c++ - 包装 C++ 模板,以便它们可以在 C#、Java 等中使用

转载 作者:行者123 更新时间:2023-11-30 02:08:29 26 4
gpt4 key购买 nike

我有一个严重依赖模板的 C++ 库 (.lib)。我正在为该库创建一个 C++ 包装器,以在 .dll 中向外部公开其函数。这些公开的函数将依次由 Java 和 C# 库分别通过 JNA/JNI 和 PInvoke 使用。

我从this SO question了解到无法导出模板。

有没有人对包装 C++ 模板的最佳方式有很好的指导,以便尽可能多地保留它们的灵 active ,但可以导出?

例如,一个典型的 C++ 函数如下所示:

template <class A, class B>
inline
A
do_something(A first, A last,
B result )
{
/* implementation */
}

最佳答案

当人们说“无法导出模板”时,这实际上意味着“无法导出模板”。

由于无法导出模板,您无法“尽可能地保留它们的灵 active ”。

您可以导出单个函数,但不能导出模板。您始终可以从函数模板生成函数(通过实例化它。template <typename T> void foo() 是一个模板,但 void foo<int>() 是一个函数,尽管它的名称中有一些有趣的符号)

但是不,模板的灵 active 只是因为它们是模板。当你无法导出模板时,你也无法导出灵 active 。您必须导出要导出的特定函数和类。

关于c++ - 包装 C++ 模板,以便它们可以在 C#、Java 等中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6716625/

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