c# - 用于创建 DLL : C++ or C# 的编程语言

标签 c# c++ dll

这不是编程问题!

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

这会影响功能吗?

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

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

非常感谢您的宝贵时间!

问候, 斯瓦南德!

最佳答案

DLL 最好用 C 编写:)

让我解释一下:

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

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

总结:

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

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

  3. 如果您想创建一个可从 .NET、C、C++ 使用且无论编译器如何的通用库,请使用标记为 extern "C"并具有 C- 的 C 或 C++ 独立函数比如参数,比如指针和 POD。

HTH

关于c# - 用于创建 DLL : C++ or C# 的编程语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3921541/

相关文章:

c# - 生成多个编码的 HTML/文本电子邮件 T-SQL

c# - 如何删除数据 GridView 中的一行并在删除按钮单击事件时更新 MySQL 数据库?

c - 加载 DLL 库

c# - 如何在XAML中将DataBinding设置为任意属性?

c# - regsvr32 文件已加载,但入口点 dllregisterserver

c++ - 什么是在 C++ 中返回错误代码的正确方法

c# - 两个不同的进程可以共享相同的 DLL 数据吗?

c# - 从子程序集中读取父 Silverlight 项目的文件夹结构

c++ - if-initializer 中的 lock_guard 初始化而不是简单的作用域

c++ - 在原始字符串文字中包含 )"而不终止所述文字