Thread overview | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
April 19, 2014 Get and set terminal size | ||||
---|---|---|---|---|
| ||||
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", referenced from: _main in RSConsole.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Does anyone know what the problem is? Maybe there are other methods to get and set sizes of the Mac OS X console? |
April 19, 2014 Re: Get and set terminal size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Denis Mezhov | Try adding -lncurses or -lcurses to the command line. tgetnum is found in the curses library which isn't linked in automatically by default. |
April 19, 2014 Re: Get and set terminal size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | 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'
:((
|
April 19, 2014 Re: Get and set terminal size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Denis Mezhov | 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. |
April 19, 2014 Re: Get and set terminal size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | 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 segfault error :(
Segmentation fault: 11
|
April 19, 2014 Re: Get and set terminal size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Denis Mezhov | 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. |
April 19, 2014 Re: Get and set terminal size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Denis Mezhov | 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 const char*. |
April 19, 2014 Re: Get and set terminal size | ||||
---|---|---|---|---|
| ||||
Posted in reply to FreeSlave | 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.
|
April 20, 2014 Re: Get and set terminal size | ||||
---|---|---|---|---|
| ||||
Posted in reply to FreeSlave | 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 toStringz to string literals since they implicitly cast to const char*.
It's work) Thanks.
|
Copyright © 1999-2021 by the D Language Foundation