c# - 通过在 C# 中导入 DLL 来重用 C++ 函数

标签 c# c++ dllimport

在将 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/

相关文章:

javascript - 使用razor动态生成DIV和CHECKBOX的唯一ID

c++ - 如何从命令提示符将字符 `^` 传递给我的程序?

c++ - 在 Visual Studio 中从 1 个项目构建多个目标

c++ - 符号查找错误 : undefined symbol: _alloca

c# - Windows 7 x32下C#中dllimport的问题

c# - 找不到该组件。 (来自 HRESULT : 0x88982F50) 的异常

c# - 在 C# 中获取一张表的架构

c# - 设置 asp :textbox val() in jQuery and get the Text of the same on the server side code

c# - 调用 C 代码时避免 AccessViolationException

c# - tinyfiledialogs 如何将文件保存在俄语命名文件夹中