c++ - 在 Ruby 上调用 Dll(不是 Windows API)

标签 c++ ruby winapi

我在 Ruby 环境中无法加载 C 扩展,只能加载纯 ruby​​ 代码。我不能使用 RubyInline、FFI 或 Win32OLE,只有一种加载外部代码的方法:Win32API。但是我怎样才能编译出 ruby​​ 需要的 C++ 代码呢?我尝试使用这些代码,但出现错误:

测试.cpp

static int add(int a, int b) // I tried without static too
{
  return a + b;
}

编译

g++ --shared test.cpp -o test.dll

主要.rb

Win32API.new('test.dll', 'add', 'II', 'I').call(1, 2) # => should return 3

错误信息

RunTimeError
GetProcAddress: add or addA

版本:

Ruby 1.8.1
GCC 4.5.2 (tdm-1)

最佳答案

您需要使用 .DEF 文件。请参阅我对此的回答 question

关于c++ - 在 Ruby 上调用 Dll(不是 Windows API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5697059/

相关文章:

ruby - `map` 是否使用 `each`?

windows - 路径前缀\??\和\\?\

c++ - 如何使用 Win32 解码 JPEG?

c++ - 同步 I/O 与调用线程?

linux - C/C++格式字符串中的填充如何存储在Linux的虚拟内存中?

c++ - 访问结构体数组的元素。

c++ - 取消引用 NULL 指针是否被视为未指定或未定义的行为?

c++ - 将包含另一个 vector 的结构 vector 写入二进制文件

ruby-on-rails - 如何在 Rails 中停止样式表自动链接?

ruby-on-rails - 如何强制 Rails 重新加载 application.js?