Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
a little help with importing c library
Tea Figuric
2/27/2007 11:25:00 PM
Hello,
I am very new to Ruby, but I am giving it a try. If I am able to load
the dll and call its functions, I will go into more detail. The .dll is
created in VS2005 on XP os
First of all, I used the search function of the forum, but I didn't find
what I was looking for.
After initial problems, my ruby script recognizes the library (if I
remove the file, it complains).
It's a C wrapper library for a C++ library that has just a few functions
for now.
I am stuck at the beginning :)
My library is called qfinterface.dll and I would like to call the
function CreateSession(const char *) that returns an int, and pass it a
string.
I mostly get the error "uninitialized constant" when trying to call the
function, and I've tried so many different things, that I am losing
track of what I tried and what not. right now I get "undefined local
variable or method"
this is my script sofar(in one of its versions):
------------------------------------------------------------
require 'qfinterface'
puts "hello"
Qf = qfinterface.CreateSession("hd")
def main()
puts "hello"
#QfInterface.CreateSession("sf")
end
main()
-----------------------------------------------------
would you please point me into right direction in how to call these
classes.
please let me know if you need further information.
Thanks for your help!
--
Posted via
http://www.ruby-...
.
3 Answers
Tea Figuric
2/28/2007 12:37:00 AM
0
I got it!!
in case another lost soul needs it, here is how:
require 'qfinterface'
require 'Win32API'
puts "hello"
CreateSession = Win32API.new("qfinterface","CreateSession",["P"],"I")
def main()
puts "hello"
check = CreateSession.call("mystring")
end
main()
--
Posted via
http://www.ruby-...
.
Mat Schaffer
2/28/2007 3:49:00 AM
0
On Feb 27, 2007, at 6:24 PM, Tea Figuric wrote:
> It's a C wrapper library for a C++ library that has just a few
> functions
> for now.
>
> I am stuck at the beginning :)
> My library is called qfinterface.dll and I would like to call the
> function CreateSession(const char *) that returns an int, and pass
> it a
> string.
>
> I mostly get the error "uninitialized constant" when trying to call
> the
> function, and I've tried so many different things, that I am losing
> track of what I tried and what not. right now I get "undefined local
> variable or method"
I'm assuming you've read README.ext already?
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/RUBY/R...
view=markup
Have you investigated using the inline library? It might make more
sense if you just need a few functions.
http://www.zenspider.com/ZSS/Products/R...
Using C from Ruby is a bit more complex than just regular ruby
programming, but hopefully those links can get you started.
-Mat
Tea Figuric
3/2/2007 5:41:00 PM
0
Mat Schaffer wrote:
> On Feb 27, 2007, at 6:24 PM, Tea Figuric wrote:
>
> I'm assuming you've read README.ext already?
>
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/RUBY/R...
> view=markup
>
> Have you investigated using the inline library? It might make more
> sense if you just need a few functions.
>
http://www.zenspider.com/ZSS/Products/R...
>
> Using C from Ruby is a bit more complex than just regular ruby
> programming, but hopefully those links can get you started.
> -Mat
Thank you for your response Mat, I will look into the links.
The library should be used by different scripting languages and
languages, so it should be as generic as possible.
In the meantime, I ran into a different problem, and I am having
problems finding an answer to it.
Since my C/C++ functions return only int, I have a function to which I
pass a *buffer (as char*), and befferLength (as int), where the buffer
should be populated inside of the function, and I have access to the
value from the outside. something like int (or void) GetValue(char
*buffer, int bufferLength);
How do I pass a char* from ruby? is there something to convert from
string to char * without having to change my C lib?
Thanks again for your help!
--
Posted via
http://www.ruby-...
.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
a little help with importing c library
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password