我对 C# 的了解非常有限。我的目标是为我的 C# 同事提供一个 C++ dll API。由于遗留原因,dll 必须使用 C++。
问题 - 能否在 C# 中编码(marshal) C++ 模板函数(如下所示,来自 VS)?
class __declspec(dllexport) Foo
{
public:
template <typename T> T* getFoo(T* fooData){return fooData;};
};
如果没有,有什么建议吗?传递到模板函数中的每种类型是否都应该有自己的函数,以便 C# 可以对其进行编码?
最佳答案
Question - Can a C++ template function (shown below from VS) be marshaled in C#?
没有。没有从 C# 到 C++ 的兼容二进制接口(interface)。您只能从 C# 调用导出的 C 符号。
理论上,您可以在 C++ DLL 中显式实例化模板,这将使它们获得外部链接和导出符号表中的条目。但是名称修改将使这些函数无法用于所有实际目的。因此,最好的方法是拥有一个调用底层 C++ 函数的中间 C 兼容层。
关于c# - 从 C# 调用 C++ 模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6059838/