创建 DLL 的编程语言:C++ 或 C#

2023-12-20

这不是编程疑问!

我将为某些应用程序编写一个 DLL。 我有两个选项可供选择: C++ 或 C# 我应该用哪种语言编写 DLL?

这会影响功能吗?

我是一个完全的新手,不了解 C++ 和 C#(但不了解 C# 中的一些小程序)。

用 C++ 或 C# 编写 DLL 的优点和缺点是什么?

非常感谢您的宝贵时间!

问候, 斯瓦南德!


DLL 最好用 C 编写:)

让我解释:

DLL 是在 C++ 进入主流使用之前就被构思出来的。它们是为 C 语言创建的。您可以使用 C++ 编写 DLL,但只能在使用与 DLL 相同版本的同一编译器编写的应用程序中轻松使用它们。与 C++ 不同,C DLL 可以在 .NET 中使用(是的,我知道,从技术上讲可以,但这是一个令人头痛的问题)。

如果您使用 C#(或任何其他 .NET 语言)创建 DLL,则完全是另一回事 - 它不是 Windows DLL,它只是一个没有入口点(Main)的 .Net 程序集,因此可以从其他 .NET 使用它通过引用 DLL 来引用程序集。

总结一下:

  1. 如果您需要使用 .NET 语言中的 DLL - 用 C# 编写它,它不会是 Windows DLL,而只是一个程序集。非常容易使用。

  2. 如果您需要仅从 C++ 中使用 DLL,并且仅从同一编译器编写的应用程序中使用 DLL,请使用 C++ 编写。不方便携带,使用方便。

  3. 如果您想创建一个可以在 .NET、C、C++ 中使用且无论编译器如何的通用库,请使用标记为 extern“C” 并具有类似 C 的参数(如指针和POD 的。

HTH

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建 DLL 的编程语言:C++ 或 C# 的相关文章

  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 如何将 protobuf-net 与不可变值类型一起使用?

    假设我有一个像这样的不可变值类型 Serializable DataContract public struct MyValueType ISerializable private readonly int x private readon
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 将日期设置为未来 10 天,格式为 dd/mm/yyyy(例如 21/08/2010)

    我非常感谢您帮助创建一些 JavaScript 这些 JavaScript 最终将在 Selenium 中使用 自动设置当前日期前 10 天的日期 并以以下格式 dd mm yyyy 显示 我目前有下面的脚本 但我没有得到任何结果 var
  • 在 WPF 中设置主题

    我有一个相对简单的问题 我似乎无法弄清楚 我已经从 Internet 下载了一些 XAML 格式的主题文件 我想将它们用作我的 WPF 应用程序中的主题 你怎么做到这一点 感谢所有帮助 将 theme xaml 文件添加到您的项目中 右键单
  • 类别和包中的类组织在不同版本的 Pharo 中如何工作?

    有人可以解释一下 Pharo 中的类组织在不同版本的 Pharo 中是如何工作的吗 所有类都是 Smalltalk 全局的一部分 一直都是 似乎一直这样 类可以有一个类别 但这只是一种标签 一直都是 好像还是这样 但有时类别会以某种方式映射
  • 用 ggvis 将 RMarkdown 编织到 Word

    当我尝试用以下内容编写 RMarkdown 文档时ggvis绘图到 Word 我从 Rstudio 收到以下消息 Error Functions that produce HTML output found in document targ
  • 将过滤器从一个交叉过滤器数据集应用到另一个交叉过滤器

    我有两个数据集 它们具有相似的列 维度 但按行进行不同的分组并包含不同的度量 Ex 数据集1 Year Category SubCategory Value01 Value02 2000 Cars Sport 10 11 2000 Cars
  • IntelliJ 显示单元测试未涵盖的更改行

    在日常工作中 我打算为我更改的代码编写测试 我的工作流程通常是这样的 查找要更改的代码 编写失败的测试 更改代码 观看测试通过 在提交之前 我运行所有测试 但实际上 我可以在不知不觉中更改有关我们的测试覆盖范围的任何行 我现在所做的通常是查
  • strstr 显示出现之前的字符串

    我想在针出现后得到字符串的第一个位 如下所示 user strstr email protected cdn cgi l email protection true 但这仅适用于 PHP 版本 5 3 0 我有 5 2 9 有什么办法可以得
  • 用于 javascript 的 QT 5.4 WebEngine 开发工具

    我正在使用 QWebEngineView 和 QWebEnginePage 创建一个应用程序 我想知道是否有办法激活 Web 开发工具 我需要调试 html javascript 代码 就像您在 Chrome 上使用 Google Deve
  • 读取一堆 JSON 文件,转换它们,然后保存它们

    我正在努力实现这一点Gulp 阅读每一个 json给定目录 包括子目录 中的文件 以某种方式改变它们 例如添加新的根级别等 将它们保存到一个新目录中 保持原始结构 我迷失的地方是如何通过管道读取 写入 JSONsrc 我现在有以下骨架 gu
  • int索引 = Convert.ToInt32(e.CommandArgument.ToString());不管用

    请帮我 int index Convert ToInt32 e CommandArgument ToString 这对我不起作用 它显示异常 输入字符串的格式不正确 e CommandArgument不为空 我正在从中获得价值 你应该像下面
  • Imagemagick SVG 到 PDF 转换图像质量很差

    我们正在尝试将 SVG 宽度 737 高度 521 转换为 A4 尺寸的 PDF 问题是生成的图像质量非常糟糕 这就是我们正在做的 SVG 带有远程图像 URL
  • 领域模型与数据库模型不同吗?

    我理解 DDD 中的概念 但在实践中却有点令人困惑 我正在使用 C SQL Server 和 EF 我发现根据我的数据库模式 持久性模型看起来与我的聚合不同 为了定义干净 漂亮的聚合 实体和值对象 我的域模型看起来与数据库模型不同 此外 如
  • 如何通过引用传递枚举?

    我有一个带有四个键的枚举 我将其作为接口程序的输入 并且我想将枚举按值传递给接口函数 该函数已经变得相当长 枚举是这样的 enum MYKEYS W S O L 还有一个布尔数组 我必须通过引用传递 这也有点棘手 bool key 4 fa
  • 32位OR如何保持加载指令?(RISC风格32位架构)

    我对指令大小和可寻址空间有点困惑 我假设指令大小应该与地址位的大小相同 我在书中没有找到足够的解释 如果我是正确的 那么理论上如果我们有一个 2 32 32位架构 RISC风格 中的内存可寻址单元 字节 4字节大小的加载指令如何保存操作码和
  • 如何在 Firefox 中检查预检结果缓存的内容

    火狐浏览器支持吗http www w3 org TR cors preflight result cache http www w3 org TR cors preflight result cache如果是的话 如何查看其内容 如何将其与
  • Selenium python - 启动 Firefox Webdriver 时拒绝访问 /hub/session

    我最近刚刚开始使用 Selenium Webdriver 而不是 Selenium 1 0 并且我正在努力解决一个完全阻止我运行测试的问题 当尝试启动 webdriver Firefox 时 我收到一个 WebDriverException
  • 如何从活动中的RecyclerView上的onClick启动活动

    大家好 当我点击时 我正在尝试开始活动RecyclerView 当我在自定义适配器中添加代码时它就会启动 但是当我在 Activity 中编写它时 它只需给我 Log 上的位置 所以有什么帮助吗 这是活动中的 OnClick 代码 这就是我
  • C# Windows 服务

    Scenario 我创建了一个 Windows 服务 但是每当我启动它时 它都会立即停止 该服务是从一个控制台应用程序构思出来的 该应用程序用于订阅事件并监视服务器上的进程 如果进程发生任何事情 即它被杀死 那么该事件将触发进程重新启动 我
  • Bash:使用变量作为关联数组名称

    我正在编写一个 Bash 脚本来简化从我们的主站点到多个机构的文件复制 在此脚本中 我尝试使用变量作为关联数组名称 但出现错误 代码如下 bin bash declare A GROUP1 declare A GROUP2 declare
  • 创建 DLL 的编程语言:C++ 或 C#

    这不是编程疑问 我将为某些应用程序编写一个 DLL 我有两个选项可供选择 C 或 C 我应该用哪种语言编写 DLL 这会影响功能吗 我是一个完全的新手 不了解 C 和 C 但不了解 C 中的一些小程序 用 C 或 C 编写 DLL 的优点和