我正在尝试在RSPEC(ruby风味的BDD)和Windows应用程序之间编写一个接口.应用程序本身是用一种晦涩的语言编写的,但它有一个C API来提供访问.我已经使用Ruby/DL,但是即使是最基本的DLL方法调用也很困难.这是我到目前为止,在一个名为gt4r.rb的文件中:
require 'dl/import'
module Gt4r
extend DL::Importable
dlload 'c:\\gtdev\\r321\\bin\\gtvapi'
# GTD initialization/termination functions
extern 'int GTD_init(char *[], char *, char *)'
extern 'int GTD_initialize(char *, char *, char *)'
extern 'int GTD_done(void)'
extern 'int GTD_get_error_message(int, char **)'
end
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的阅读表明这是我需要的所有内容,所以我写了一个RSPEC示例:
require 'gt4r'
@@test_environment = "INCLUDE=C:\\graphtalk\\env\\aiadev\\config\\aiadev.ini"
@@normal_user = "BMCHARGUE"
describe Gt4r do
it 'initializes' do
rv = Gt4r.gTD_initialize @@normal_user, @@normal_user, @@test_environment
rv.should == 0
end
end
Run Code Online (Sandbox Code Playgroud)
当跑...
C:\code\GraphTalk>spec -fs -rgt4r gt4r_spec.rb
Gt4r
- initializes (FAILED - 1)
1)
'Gt4r initializes' FAILED …
Run Code Online (Sandbox Code Playgroud)