HFloat
-
Hi, hab heute mal HFloat ausprobieren wollen und hab erstmal ein bsp.-programm gewählt, aber wenn ich das "builden" will kommt als Fehlermeldung:
eleting intermediate files and output files for project 'test8 - Win32 Debug'.
--------------------Configuration: test8 - Win32 Debug--------------------
Compiling...
StdAfx.cpp
Compiling...
test8.cpp
Linking...
test8.obj : error LNK2001: unresolved external symbol "public: __thiscall hfloat::~hfloat(void)" (??1hfloat@@QAE@XZ)
test8.obj : error LNK2001: unresolved external symbol "void __cdecl mul(class hfloat const &,class hfloat const &,class hfloat &)" (?mul@@YAXABVhfloat@@0AAV1@@Z)
test8.obj : error LNK2001: unresolved external symbol "void __cdecl add(class hfloat const &,class hfloat const &,class hfloat &,unsigned long)" (?add@@YAXABVhfloat@@0AAV1@K@Z)
test8.obj : error LNK2001: unresolved external symbol "void __cdecl print(char const *,class hfloat const &,unsigned long)" (?print@@YAXPBDABVhfloat@@K@Z)
test8.obj : error LNK2001: unresolved external symbol "public: class hfloat & __thiscall hfloat::operator=(char const *)" (??4hfloat@@QAEAAV0@PBD@Z)
test8.obj : error LNK2001: unresolved external symbol "public: class hfloat & __thiscall hfloat::operator=(int)" (??4hfloat@@QAEAAV0@H@Z)
test8.obj : error LNK2001: unresolved external symbol "public: __thiscall hfloat::hfloat(unsigned long)" (??0hfloat@@QAE@K@Z)
test8.obj : error LNK2001: unresolved external symbol "private: static unsigned long hfloat::defaultprec" (?defaultprec@hfloat@@0KA)
test8.obj : error LNK2001: unresolved external symbol "public: static void __cdecl hfloat::default_prec(unsigned long)" (?default_prec@hfloat@@SAXK@Z)
test8.obj : error LNK2001: unresolved external symbol "public: static void __cdecl hfdata::radix(int,char *)" (?radix@hfdata@@SAXHPAD@Z)
Debug/test8.exe : fatal error LNK1120: 10 unresolved externals
Error executing link.exe.test8.exe - 11 error(s), 0 warning(s)
Der Quelltext lautet wie folgt:
#include "stdafx.h" #include "hfloat.h" int main() { // precision in LIMBs, use o power of two: hfloat::default_prec(64); // radix, use 10000 (decimal) or 65536 (hex numbers): hfloat::radix(10000); hfloat a; hfloat b; hfloat c; b = 999; a = "1.000000000000000000000000000000000000000777e-6"; print("\n a= \n",a); print("\n b= \n",b); add(a,b,c); // func(src1,src2,dest); print("\n a+b= \n",c); a = ".90005e1177"; b = " 3.14000000e23456 "; print("\n a= \n",a); print("\n b= \n",b); mul(a,b,c); print("\n a*b= \n",c); return 0; }
Ich benutze Microsoft Visual C++
Danke für die Hilfe im Voraus
-
Was zu Geier sind hfloat?
-
Versuch es mal mit #include <hfloat.h>.
Ich glaube die Datei liegt nicht im gleichen Vrz. wie deine cpp.
-
Hab ich ausprobiert, aber immer noch die selben fehlermeldungen
-
Hast du auch die zugehörigen libs eingebunden?
Sollte man beim Linker mit angeben.
-
@LuAn: Du solltest schon sagen was hfloat sind, wofür man sie benutzt und ob es eine eigene Lib ist wenn dir jemand helfen soll.
-
@MaSTaH
Es handelt sich hierbei um "highpercition float",habe es bei google und im faq gefunden.
-
Hmmm, noch nie benutzt. Meint ihr das hier? http://www.jjj.de/hfloat/
-
Ich denke mal, das hat eher was mit diesen vorkompilierten Header-Dateien von VC++ zu tun. Geh mal in deine Projekt-Einstellungen und da unter C++ gibts die Möglichkeit entsprechende Optionen einzustellen. Das Topic würde ich in das MFC-Forum schieben.
-
Das sieht so aus wie ein ganz normaler Linkerfehler. Du musst die Lib dazulinken.
-
Also ich hab das ganze mal bei meinem Freund ausprobiert, der hat Visual.net
und da kamen ebenfalls die fehler. Bei der Hilfe hat er folgendes angegeben:Linker Tools Error LNK2019]
In Funktion Funktion Verweis auf nicht aufgelöstes externes Symbol Symbol
In Funktion wurde ein nicht definiertes externes Symbol (Symbol) gefunden. Um diesen Fehler zu beheben, geben Sie eine Definition für das Symbol an oder entfernen den Code, der darauf verweist.
Betrachten Sie das folgende Beispiel:
extern int i;
extern void g();
void f()
{
i++;
g();
}
int main()
{
}
Wenn i und g nicht in einer der Builddateien definiert sind, erzeugt der Linker den Fehler LNK2019. Diese Definitionen können hinzugefügt werden, indem Sie die Quellcodedatei einlesen, die die Definitionen als Teil der Kompilierung enthält. Alternativ können Sie OBJ- oder LIB-Dateien übergeben, die die Definitionen für den Linker enthalten.Wenn bei C++-Projekten aus früheren Versionen, die auf die aktuelle Version aktualisiert wurden, __UNICODE definiert wurde und der Einsprungpunkt WinMain war, müssen Sie den Namen der Einsprungpunktfunktion entweder in _tWinMain oder _tmain ändern.
Im Folgenden sind einige häufige Ursachen für LNK2019 beschrieben:
Die Symboldeklaration enthält einen Rechtschreibfehler, so dass die Namen von Symboldefinition und -deklaration nicht übereinstimmen.
Eine Funktion wurde zwar verwendet, der Typ oder die Anzahl ihrer Parameter stimmen jedoch nicht mit der Funktionsdefinition überein.
Die Aufrufkonvention (__cdecl __stdcall oder __fastcall) weist Unterschiede zur Verwendung der Funktionsdeklaration und -definition auf.
Die Symboldefinitionen sind in einer Datei enthalten, die als C-Programm kompiliert wurde, die Symbole wurden jedoch in einer C++-Datei ohne extern "C"-Modifizierer deklariert. In diesem Fall ändern Sie die Deklaration. Verwenden Sie anstelle von
extern int i;
extern void g();
beispielsweiseextern "C" int i;
extern "C" void g();
Auch wenn ein Symbol in einer C++-Datei definiert wird, die von einem C-Programm verwendet wird, geben Sie extern "C" in der Definition an.Ein Symbol wird als static definiert, später wird jedoch außerhalb der Datei darauf verwiesen.
Ein statischer Member einer Klasse wurde nicht definiert. Die Membervariable si in der unten aufgeführten Klassendeklaration sollte beispielsweise separat definiert werden:
#include <stdio.h>
struct X {
static int si;
};// int X::si = 0; // uncomment this line to resolve
void main()
{
X *px = new X[2];
printf("\n%d",px[0].si); // LNK2019
}
Mit Hilfe der /VERBOSE-Linkeroption können Sie feststellen, auf welche Dateien vom Linker verwiesen wird. Mit den Optionen /EXPORT und /SYMBOLS des DUMPBIN-Dienstprogramms können Sie auch herausfinden, welche Symbole in der DLL und in den Objekt-/Bibliotheksdateien definiert sind.Also falls das irgendwem hilft... mir nicht
Danke erstmal für die mühen von euch
-
hi
habe mir den src mal runtergeholt
http://www.jjj.de/hfloat/hfloatpage.htmlhfloat ist für precision. klar.
du musst erstmal eine library bauen. und oder den source einbinden in dein projekt.
mit dem heater alleine wirst du nicht gücklich
also: den source bauen, und dann zu deinem projekt dazulinken.
es gibt einen makefile, werde es später mal machen. mit dem studion kanns etwas schwierig werden, der makefile sieht eher nach gcc aus.. ist aber auch machbar.
cu
-
@elise
Kannst du mir auch sagen was das konkret heißt?