Forum: C++ och non-standard bibliotek

Forum huvudsida -> Programmering -> C++ och non-standard bibliotek

Sidor: 1

Till botten

Tower800 17:36 - 12:a Februari 2007 | Post #1
Medlem
Inlägg: 3


Skicka PM
Hejsan!

Jag är relativt ny inom C++ programmering.

Jag har testat många olika kompilatorer Borland C++ Builder 6, MS Visual C++ 2005 Express, Dev-Cpp och Code::Blocks med GCC.

Jag har fastnat för Code:Blocks och tänker därmed använda denne framöver.

Till mitt problem då..

Jag försöker använda MIRACL biblioteket "Multiprecision Integer and Rational Arithmetic C/C++ Library".

Jag har försökt använda MIRACL i alla ovannämnda kompilatorer men har inte lyckats få igång biblioteket på någon av dem. Jag får alltid [linker error] Unresolved Reference ......... BLA BLA..

Koden ser ut så här i Code::Blocks -

#include <iostream>
#include <Big.h>

using namespace std;

int main()
{
Big x;

    cout << "Hello world!" << endl;
    return 0;
}



Kompileringen ser ut så här -


Project : Console application
Compiler : GNU GCC Compiler (called directly)
Directory : D:\CPP\Compiler\CodeBlocks\Projects\
--------------------------------------------------------------------------------
Switching to target: default
Linking console executable: D:\CPP\Compiler\CodeBlocks\Projects\Project1.exe
..\lib\miracl.a(mrcore.o):mrcore.c:(.text+0x677): undefined reference to `__dj_stdout'
..\lib\miracl.a(mrcore.o):mrcore.c:(.text+0xa93): undefined reference to `__dj_stdout'
..\lib\miracl.a(mrcore.o):mrcore.c:(.text+0xad7): undefined reference to `__dj_stdout'
..\lib\miracl.a(mrcore.o):mrcore.c:(.text+0xc86): undefined reference to `__dj_stdout'
..\lib\miracl.a(mrcore.o):mrcore.c:(.text+0xca2): undefined reference to `__dj_stdout'
..\lib\miracl.a(mrcore.o):mrcore.c:(.text+0xcc9): more undefined references to `__dj_stdout' follow
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)


Jag includerar MIRACL biblioteket 'miracl.a' i Code::Blocks genom Projekt/Build Options och väljer fliken Linker. Där inkluderar jag filen miracl.a.

Jag förmodar att mina bristfälliga kunksaper om hantering av "icke standard bibliotek" kan vara problemet här..är det någon som använder MIRACL eller annars ändå kan leda mig på rätt väg i detta frustrerande problem ?

Mången tacksam för svar
Tower800


-------------------------
Ingen signatur!



Slash 19:43 - 12:a Februari 2007 | Post #2
Medlem
Inlägg: 141


Skicka PM
miracl.a är antagligen till linux. Du måste enligt dokumentationen använda något av de andra libsen som skickades med. Det vill säga ms32.lib eller bc32.lib. I värsta fall kan du ju kompilera ditt eget lib. ...terkom om du behöver mer hjälp med det.

(Eftersom du tidigare sa att du använde MSVC så antog jag att du sitter på en windowsmaskin).

-------------------------
Ingen sigantur!

Senast redigerad 19:44 - 12:a Februari 2007


Tower800 20:35 - 12:a Februari 2007 | Post #3
Medlem
Inlägg: 3


Skicka PM
Hej Slash!

Jo det är sant, jag sitter på en Windows maskin.

ms32.lib är skapat med/för Microsoft kompilator, bc32.lib är skapat med/för Borland kompilator och miracl.a är skapat med/för gcc kompilatorn.

Jag har kompilerat mitt eget bibliotek nu med GCDOIT.BAT som använder GCC kompilatorn helt utan errors.

Och i och med detta så får jag nu inte heller längre dessa Unresolved references errors, men därimot en massa andra errors Smiley

Så det handlar kanske om att lära sig MIRACL till nu då Smiley

Tackar för ditt svar Slash

Mvh Tower800

-------------------------
Ingen signatur!



agge89 22:57 - 13:e Februari 2007 | Post #4
Medlem
Inlägg: 13


Skicka PM
Hej
int main()
{
const long double pi=3.14159265382;
long double la;
float grad;
cout<<"skriv in en grad:"<<endl;
cin >>grad;
grad=180/pi*grad;
la=sin(grad);

cout<<"sinus för graden är: "<<la<<endl;
cin.ignore(255, '\n');
cin.get();
return 0;
}
När man skriver in en grad, så måste man omvandla den till radianer, för att få fram sinus för en grad. omvandlingen blir något fel, och svaret blit istället för t.ex. 1, -0,9865, eller nåt. Går det att göra så att den räknar med grader istället, eller finns det någon annan lösning på problemet? Jag använder math.h som biblotek.

Tack på förhand Smiley

-------------------------
Augustismen



Slash 23:09 - 13:e Februari 2007 | Post #5
Medlem
Inlägg: 141


Skicka PM
Faktum är att du bara har sett förbi en liten detalj. Det ska vara rad = pi*grad/180;, så om du ändrar det borde du förhoppningsvis få bättre resultat Smiley

-------------------------
Ingen sigantur!



Independence 23:16 - 13:e Februari 2007 | Post #6
Administratör
Inlägg: 1800


Skicka PM
agge89: Du ska ta pi/180, inte 180/pi Smiley

Dock förstår jag inte varför du skriver i den här tråden, den här tråden hör ju till tower800's problem med icke-standardbibliotek och har inget alls att göra med radianer. Har du ett helt orelaterat problem bör du skapa en ny tråd istället.

-------------------------

Vi är riddarna som säger fiskbulle!





FunkyChicken 00:48 - 14:e Februari 2007 | Post #7
Nyhetsredaktör
Inlägg: 800


Skicka PM
Och ditt värde på pi är fel vid åttonde decimalen - 3.14159265358 ska det vara! Smiley

(såvadå? det är väl inget lustigt med att man direkt noterar en saknad siffra i decimalutvecklingen av pi? va? VA?)




Sidor: 1

Forum huvudsida -> Programmering -> C++ och non-standard bibliotek
Atom feed

Du får inte posta i den här tråden | Till toppen