在将 C++ 创建的 DLL 导入 C# 时,我遇到了一般性问题。
1) 我编写了使用双指针、指针数组等指针的 C++ 函数。
例如static int someFunc(char *var[])
我如何重新使用它们,因为 C# 不支持指针。
2) 我是否需要在 C# 中通过 [DllImport()] 公开所有函数?即我有一个名为 someFunc 的函数,它在内部调用其他函数。我是否也应该在“DllImport”下公开这些功能
3) 谁能解释为什么我需要在 C# 中处理非托管代码,尤其是当我从 C++ 导入 dll 时?
最佳答案
第 1 点答案: 在 C# 的函数声明中使用 unsafe 关键字
static unsafe int someFunc(char* var[]);
第2点答案: 无需导入所有函数。只导入 someFunc()
第 3 点答案: C# 使用类型安全的托管代码并引用一些有效的内存位置。然而,C++ 中的指针可能指向也可能不指向任何有效的内存位置。因此,您需要在 C# 中处理非托管代码。
关于c# - 通过在 C# 中导入 DLL 来重用 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11031196/