-1

如何创建可在另一种语言上调用的 win32api(dll)?例子:

当我使用 ruby​​ 时,我应该使用用 C# 或 C++ 编写的 dll。那么如何创建这样的动态库呢?

4

2 回答 2

0

你有两种方法。

  1. 如果您的 DLL 是使用本地语言实现的,例如 C/C++。您可以从您的 DLL 中导出 C 函数并用其他语言调用它。大多数语言都可以直接调用 C 函数,也可以使用语言扩展,例如Win32API在 Ruby 中。
  2. 使用 COM(组件对象模型)。COM 旨在跨语言工作。这是首选方法,因为它有很多优点。您可以使用 C#、C++、Delphi 和其他语言实现 COM 类,并在其他语言中使用它,如该语言中的普通对象。
于 2013-07-08T05:02:08.207 回答
0

C++ 和 C# Dll 之间存在重要差异。

C++ 允许您公开__declspec(dllexport可以从 ruby​​ 调用的全局函数(使用 ))。

C# Dll 包含一个清单,可用于查找所有类型并使用来自所述 Dll 的整个对象模型。

我从来没有尝试过使用 ruby​​ 的后者(即所有类型和类层次结构),但如果可能的话,这将是一种只能调用导出函数的首选方法。IronRuby 显然在导入 .NET 类型时没有问题。

要创建 C++ 库,请选择 Visual C++ Win32 项目,然后在随后出现的对话框中按 Next 以选中 DLL 复选框。否则选择 Visual C# 类库项目。

于 2013-07-06T23:06:51.787 回答