PDA

Zobrazit v plné verzi : [C++, Linux] kde je deklarovanej sin()?-math.h to neni.. :-(



KtK
20.05.2003, 16:44
Chtel jsem si pohrat se zvukarnou: ./generator > /dev/dsp :-)
jenze hned ze zacatku jsem zjistil, ze ani nespoctu sinus:


#include <stdio.h>
#include <math.h>
int main ()
{
float period;
int t;

printf("tabulka sinu\n");

for (t=0; t<1000; t++)
{
printf("%f\n%f\n", t/500.0, sin(t/500.0));
}
}


vyhodi pri kompilaci hlasku


undefined reference to 'sin'

Je to kompileny gcc
zkousel jsem to i maxiamalne zjednodusit - ze to jen do period priradilo sin naky konstantni hodnoty, a dopadlo to stejne. Jakoby v math.h nebyl sinus. (Neni ani v tgmath.h)

sorry, pokud je to maximalni lamerina, ale ja s tim neumim hnout..

Lopo
20.05.2003, 17:24
Chtel jsem si pohrat se zvukarnou: ./generator > /dev/dsp :-)
jenze hned ze zacatku jsem zjistil, ze ani nespoctu sinus:


#include <stdio.h>
#include <math.h>
int main ()
{
float period;
int t;

printf("tabulka sinu\n");

for (t=0; t<1000; t++)
{
printf("%f\n%f\n", t/500.0, sin(t/500.0));
}
}


vyhodi pri kompilaci hlasku


undefined reference to 'sin'

Je to kompileny gcc
zkousel jsem to i maxiamalne zjednodusit - ze to jen do period priradilo sin naky konstantni hodnoty, a dopadlo to stejne. Jakoby v math.h nebyl sinus. (Neni ani v tgmath.h)

sorry, pokud je to maximalni lamerina, ale ja s tim neumim hnout..
mno podla dokumentacie by to v math.h malo byt ...
skus si ten math.h pozret v nejakom prehliadaci a pohladat ci tam ta fcia teda je alebo nejni ...

KtK
20.05.2003, 18:42
To jsem samo udelal, skutecne tam nic takovyho neni.. :(

xvojta
20.05.2003, 19:28
mrkni sem
http://www.opengroup.org/onlinepubs/007908799/xsh/asin.html

v math.h to je jen se to jmenuje asin() :wink:

KtK
20.05.2003, 19:33
mrkni sem
http://www.opengroup.org/onlinepubs/007908799/xsh/asin.html

v math.h to je jen se to jmenuje asin() :wink:

Dik za link, uzitecnej, jen je to opacna funkce nez kterou chci, ale snad najdu i ten sin..
Edit: nasel jsem. Samo to tam podle te stranky ma byt. Muze mi nekdo vysvetlit, proc to teda nefacha?????

Glottis
20.05.2003, 22:20
tezko rict, neams naborenej header file math.h? nebo zkus to vystipat z printf a prirad to nejdriv do promene :/ melo by to byt jedno ale clovek nikdy nevi. nebo zkus sinl() to pracuje s longdoublem

KtK
20.05.2003, 22:30
tezko rict, neams naborenej header file math.h? nebo zkus to vystipat z printf a prirad to nejdriv do promene :/ melo by to byt jedno ale clovek nikdy nevi. nebo zkus sinl() to pracuje s longdoublem

Jak jsem psal - zjednodusoval jsem ten prog i tak, ze jediny co mel udelat, bylo spocist do jedny promeny dat sin(0.5) Vyhodilo to stejou hlasku. :( ten sinl zkusim..

EDIT: ted jsem se jeste jednou dival do tgmath.h, tam je def. sin()

Tak jsem naincludoval tgmath, a co myslite, ze to vyhodilo?
undefined reference to 'sinf' -to f neni preklep, a v celym zdrojaku, ani tgmath.h se retezec sinf nevyskytuje. Tak uz jsem z toho vazne blbej.. :?:

Lopo
20.05.2003, 22:54
tezko rict, neams naborenej header file math.h? nebo zkus to vystipat z printf a prirad to nejdriv do promene :/ melo by to byt jedno ale clovek nikdy nevi. nebo zkus sinl() to pracuje s longdoublem

Jak jsem psal - zjednodusoval jsem ten prog i tak, ze jediny co mel udelat, bylo spocist do jedny promeny dat sin(0.5) Vyhodilo to stejou hlasku. :( ten sinl zkusim..

EDIT: ted jsem se jeste jednou dival do tgmath.h, tam je def. sin()

Tak jsem naincludoval tgmath, a co myslite, ze to vyhodilo?
undefined reference to 'sinf' -to f neni preklep, a v celym zdrojaku, ani tgmath.h se retezec sinf nevyskytuje. Tak uz jsem z toho vazne blbej.. :?:
ja to vidim na preinstalovanie balikov gcc a glibc ;D ;D

RayeR
21.05.2003, 10:29
Zkus to zkompilovat zde (online DJ'c compiler) :
http://www.delorie.com/djgpp/compile/

jde to bez problemu, mas to asi fakt nak blbe nainstalovany. Ma to spravne nastaveny cesty k include a lib souborum?

Kdyztak si rovnou stahni a nainstaluj cely DJGPP
ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp

nebo MINGW32 pro widle
http://www.mingw.org

p.s. koorva kdy uz bude ta sekce programovani?

lempour
21.05.2003, 10:36
ja tam ten sin taky nemam ???

ale mam napad jak to obejit: sin(x) je prece cos(x-(PI/2))...no a ten cos() jeby mel byt v tgmath.h

oprava: odvolavam co jsem odvolal: staci program skompilovat s volbou -lm
(napr gcc -lm neco.c) ...sice nevim proc, programovani nerozumim, ale funguje to ;D

jedik
21.05.2003, 11:25
ja tam ten sin taky nemam ???

ale mam napad jak to obejit: sin(x) je prece cos(x-(PI/2))...no a ten cos() jeby mel byt v tgmath.h

oprava: odvolavam co jsem odvolal: staci program skompilovat s volbou -lm
(napr gcc -lm neco.c) ...sice nevim proc, programovani nerozumim, ale funguje to ;D
to je proto ze pomoci prepinace -l[knihovna] udavas cestu ke knihovne se kterou to hcces skompilovat. zrovna zde to je /lib/libm-xxx. tzn kdyz neco delas napr s podporou ncurces knihovny musis kompilovat gcc -lncurses neco.c.

2ktk: neni to zrovna tvuj prb?

KtK
21.05.2003, 11:35
ja tam ten sin taky nemam ???

ale mam napad jak to obejit: sin(x) je prece cos(x-(PI/2))...no a ten cos() jeby mel byt v tgmath.h

oprava: odvolavam co jsem odvolal: staci program skompilovat s volbou -lm
(napr gcc -lm neco.c) ...sice nevim proc, programovani nerozumim, ale funguje to ;D
to je proto ze pomoci prepinace -l[knihovna] udavas cestu ke knihovne se kterou to hcces skompilovat. zrovna zde to je /lib/libm-xxx. tzn kdyz neco delas napr s podporou ncurces knihovny musis kompilovat gcc -lncurses neco.c.

2ktk: neni to zrovna tvuj prb?

Taky moc nechapu proc, ale FUNGUJEE!! pochopil jsem z tvyho vykladu, co je -l, ale proc zrovna "m"?? Co znaci to m? v /usr/include/ zadnej adresar m neni..? Nebo co to ma byt?

Kazdopadne diky obema - jedik&lempour..

jedik
21.05.2003, 15:19
ja tam ten sin taky nemam ???

ale mam napad jak to obejit: sin(x) je prece cos(x-(PI/2))...no a ten cos() jeby mel byt v tgmath.h

oprava: odvolavam co jsem odvolal: staci program skompilovat s volbou -lm
(napr gcc -lm neco.c) ...sice nevim proc, programovani nerozumim, ale funguje to ;D
to je proto ze pomoci prepinace -l[knihovna] udavas cestu ke knihovne se kterou to hcces skompilovat. zrovna zde to je /lib/libm-xxx. tzn kdyz neco delas napr s podporou ncurces knihovny musis kompilovat gcc -lncurses neco.c.

2ktk: neni to zrovna tvuj prb?

Taky moc nechapu proc, ale FUNGUJEE!! pochopil jsem z tvyho vykladu, co je -l, ale proc zrovna "m"?? Co znaci to m? v /usr/include/ zadnej adresar m neni..? Nebo co to ma byt?

Kazdopadne diky obema - jedik&lempour..
nini , mluvim o souboru /lib/libm-x.x.x.so nebo tak nejak podobne (x.x.x je verze dane knihovny) a m znamena math (trochu matouci, ja vim, ale je to tak).

Dam este jednou priklad s temi ncurses (knihovna pro textove okynka apod.):
/lib/libncurses.so.5.2 -> odkrouhnes pismenka lib na zacatku a na konci si odmyslis to co je za teckou (pomlckou) vcetne a to co ti zbyte (tedy v nasem pripade slovicko ncurses) napises primo za parametr -l pri prekladu

-> gcc -lncurses neco.c

tot laicky receno vse :)

RayeR
21.05.2003, 15:20
aha, vy ste si blbe nastavili linker...
nebo mate blbe cestu ke knihovnam.
Alespon me DJGPP linkuje matematickou knihovnu automaticky.
to gcc -lm rika, ze ma prilinkovat kod knihovny m, asi jako math. Soubor se bude jmenovat patrne "libm.a" nebo "libm.lib" v podadresari ../lib/

V *.h souborech jsou napsany jen hlavicky funkci, vlastni kod je v tech knihovnach, vetsinou *.a souborech. Pritom jmena hlavickovych souboru a knihoven spolu nemusi nijak souviset. Nevim jaky GCC pouzivas, ale v DOS/WIN se nastavuje promennou SET neco=path cesta do adresare s GCC odkud on vyhledava ty potrebne soubory...

KtK
21.05.2003, 15:41
Jedu v linuchu.

xvojta
21.05.2003, 18:43
bez problémů to funguje...



#include <math.h>
#include <iostream>

int main()
{
double x=sin(0.5);
std::cout << x;
}



o tomhle vis?
sin computes the sine of the input value. Angles are specified in radians

KtK
21.05.2003, 20:05
samozrejme, ze vim, dyt je to tak snad ve vsech jazykch, problem byl v necem uplne jinym.. :arrow: Teda pokud narazis na ty radiany..

xvojta
21.05.2003, 20:59
samozrejme, ze vim, dyt je to tak snad ve vsech jazykch, problem byl v necem uplne jinym.. :arrow: Teda pokud narazis na ty radiany..

a uz ti to jede?

KtK
21.05.2003, 21:00
precti si dred. Jede.

RayeR
22.05.2003, 12:44
Jo tak to sory, sem si nejak prve nevsim...