Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
C-Library and STRING-Parameters
#1
I want to use a C-Library together with QB64.
This works fine with number types as parameters.
But is this possible with strings (in C I have to use an array, I know!) and if yes, how ?

In the Help or Wiki of QB64 there is written (chapter "DECLARE LIBRARY"):

"Parameters used by the Library procedure must be passed by value (BYVAL) except for STRING characters."


Reply
#2
To pass a string to a function in C you have it take a `char *` parameter. In concept this is similar to a by-ref pass in QB64, you're given a pointer to the string contents rather than a copy of the string contents. A `String` parameter in `Declare Library` is the same, a by-ref pass will pass the `String` as a `char *` to the C function. Note that C is expecting the string to be NUL terminated, QB64 string's are not so you'll have to add the NUL yourself.

You're not allowed to pass a char array by-value to a C function, so as a consequence you can't pass a `String` by-value to a C function either.
Reply
#3
(09-07-2023, 10:42 AM)BSpinoza Wrote: I want to use a C-Library together with QB64.
This works fine with number types as parameters.
But is this possible with strings (in C I have to use an array, I know!) and if yes, how ?

In the Help or Wiki of QB64 there is written (chapter "DECLARE LIBRARY"):

"Parameters used by the Library procedure must be passed by value (BYVAL) except for STRING characters."

You can have a look into my RegEx example or the QB-StdLibs folder in my Libraries collection to analyze how to pass strings and how to get back a string from the C function.

Simply follow the Library link in my signature.
Reply
#4
Many thanks for all your answers! This is what I want to know.
Reply




Users browsing this thread: 2 Guest(s)