On Saturday, 19 April 2014 at 12:06:58 UTC, FreeSlave wrote:
I use
ldc2 main.d -L-lcurses
or
dmd main.d -L-lcurses
and following source code:
import std.stdio;
extern(C) int tgetnum(const(char) *id);
int main()
{
writeln(tgetnum(li));
return 0;
}
Note that you don't need to apply
I want use tgetnum for get terminal size
http://www.mkssoftware.com/docs/man3/curs_termcap.3.asp
extern(C):
int tgetnum(const(char) *capname);
calling a method from main
writeln(tgetnum(toStringz(li)));
I receive an error message
Undefined symbols for architecture x86_64:
_tgetnum,
On Saturday, 19 April 2014 at 09:59:39 UTC, Adam D. Ruppe wrote:
Try adding -lncurses or -lcurses to the command line. tgetnum
is found in the curses library which isn't linked in
automatically by default.
Error: unrecognized switch '-lcurses'
Error: unrecognized switch '-lncurses'
:((
Blargh, I don't know teh ldc switch for it :(
Try adding pragma(lib, curses); (or ncurses) to your file with
main in it, i think ldc supports that.
On Saturday, 19 April 2014 at 10:39:43 UTC, Adam D. Ruppe wrote:
Blargh, I don't know teh ldc switch for it :(
Try adding pragma(lib, curses); (or ncurses) to your file
with main in it, i think ldc supports that.
pragma(lib, curses);
extern(C):
int tgetnum(const(char) *capname);
hmm
What are compiler and platform do you use? Probably you are
trying to link with 64-bit library while being on 32-bit OS (or
vice versa)
It works fine on my 32-bit Debian with ldc2 and dmd.
I use
ldc2 main.d -L-lcurses
or
dmd main.d -L-lcurses
and following source code:
import std.stdio;
extern(C) int tgetnum(const(char) *id);
int main()
{
writeln(tgetnum(li));
return 0;
}
Note that you don't need to apply toStringz to string literals
since they implicitly cast to
On 4/19/2014 9:06 PM, FreeSlave wrote:
Note that you don't need to apply toStringz to string literals since
they implicitly cast to const char*.
And, more importantly, are nul terminated.