Seite 1 von 1
Statische Library einbinden [Google Snappy]
Verfasst: 09.05.2011 14:46
von cxAlex
Ich versuche die
Google Snappy Kompressionsbiblithek als statische Library in PB zu importieren. Zum erstellen der Library nutze ich Code::Blocks und den C Source von Google. Wenn ich das ganze als dynamische Bibliothek (DLL) einbinde klappt alles wie es soll aber als statische bekomme ich haufenweise Polink - Fehler beim Import:
POLINK: error: Unresolved external symbol '__ZNSt8ios_base4InitD1Ev'.
POLINK: error: Unresolved external symbol '__ZSt4cerr'.
POLINK: error: Unresolved external symbol '__ZNSo3putEc'.
POLINK: error: Unresolved external symbol '__ZNSo5flushEv'.
POLINK: error: Unresolved external symbol '__ZNKSt5ctypeIcE13_M_widen_initEv'.
POLINK: error: Unresolved external symbol '__ZSt16__throw_bad_castv'.
POLINK: error: Unresolved external symbol '__Unwind_Resume'.
POLINK: error: Unresolved external symbol '__ZNSsC1EPKcRKSaIcE'.
POLINK: error: Unresolved external symbol '__ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i'.
POLINK: error: Unresolved external symbol '__Znaj'.
POLINK: error: Unresolved external symbol '__ZNSsD1Ev'.
POLINK: error: Unresolved external symbol '__ZdaPv'.
POLINK: error: Unresolved external symbol '__ZNSs6resizeEjc'.
POLINK: error: Unresolved external symbol '__ZNSs12_M_leak_hardEv'.
POLINK: error: Unresolved external symbol '__ZNSt8ios_base4InitC1Ev'.
POLINK: error: Unresolved external symbol '___gxx_personality_v0'.
POLINK: error: Unresolved external symbol '__ZdlPv'.
POLINK: error: Unresolved external symbol '___cxa_pure_virtual'.
POLINK: error: Unresolved external symbol '__ZTVN10__cxxabiv120__si_class_type_infoE'.
POLINK: error: Unresolved external symbol '__ZTVN10__cxxabiv117__class_type_infoE'.
POLINK: fatal error: 20 unresolved external(s).
Muss ich etwas beachten wenn ich die Lib erstelle, bzw. ist das ein PB Fehler?
Gruß, Alex
Re: Statische Library einbinden [Google Snappy]
Verfasst: 09.05.2011 15:06
von DrShrek
Re: Statische Library einbinden [Google Snappy]
Verfasst: 09.05.2011 15:15
von cxAlex
Hm... und von wo kriege ich diese geupdateten lib-Dateien?
bzw. wo kann ich dieses "/D__iob_func=__p__iob" in meinen Code::Blocks Einstellungen hinzufügen, ich finde da nichts wie "preprocessor lines".?
Gruß, Alex
Re: Statische Library einbinden [Google Snappy]
Verfasst: 10.05.2011 06:49
von DrShrek
Sorry. Zu den Code::Blocks Link Fehlern kann ich leider keine sichere Lösung anbieten.
Ich selbst verwende Visual Studio.
Re: Statische Library einbinden [Google Snappy]
Verfasst: 11.05.2011 08:48
von edel
Auf Realsource findest du "sil.exe", damit kannst du bequem nach Symbolen suchen.
Als Platzhalter kann man * benutzen.
http://realsource.de/index.php/download ... or-pb-libs
Alternativ kannst du mal mit dem Schalter /MT herumspielen.
Re: Statische Library einbinden [Google Snappy]
Verfasst: 30.06.2011 16:59
von jpd
Hallo,
kämpfe gerade mit änliche probleme..
polink error und so wieter und so fort.
habe auch diesen eintrag von Fred gelesen
add this preprocessor line to your compiler
"/D__iob_func=__p__iob"
aber mir ist überhaupt nicht klar wie es verwendet wird.
oder hier hat edel geschrieben:
Alternativ kannst du mal mit dem Schalter /MT herumspielen.
ich würde gerne rumspielen.
Aber wie?
Vielen Dank
jpd
Re: Statische Library einbinden [Google Snappy]
Verfasst: 30.06.2011 19:34
von Danilo
cxAlex hat geschrieben:Ich versuche die
Google Snappy Kompressionsbiblithek als statische Library in PB zu importieren. Zum erstellen der Library nutze ich Code::Blocks und den C Source von Google. Wenn ich das ganze als dynamische Bibliothek (DLL) einbinde klappt alles wie es soll aber als statische bekomme ich haufenweise Polink - Fehler beim Import:
POLINK: error: Unresolved external symbol '__ZNSt8ios_base4InitD1Ev'.
POLINK: error: Unresolved external symbol '__ZSt4cerr'.
POLINK: error: Unresolved external symbol '__ZNSo3putEc'.
POLINK: error: Unresolved external symbol '__ZNSo5flushEv'.
POLINK: error: Unresolved external symbol '__ZNKSt5ctypeIcE13_M_widen_initEv'.
POLINK: error: Unresolved external symbol '__ZSt16__throw_bad_castv'.
POLINK: error: Unresolved external symbol '__Unwind_Resume'.
POLINK: error: Unresolved external symbol '__ZNSsC1EPKcRKSaIcE'.
POLINK: error: Unresolved external symbol '__ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i'.
POLINK: error: Unresolved external symbol '__Znaj'.
POLINK: error: Unresolved external symbol '__ZNSsD1Ev'.
POLINK: error: Unresolved external symbol '__ZdaPv'.
POLINK: error: Unresolved external symbol '__ZNSs6resizeEjc'.
POLINK: error: Unresolved external symbol '__ZNSs12_M_leak_hardEv'.
POLINK: error: Unresolved external symbol '__ZNSt8ios_base4InitC1Ev'.
POLINK: error: Unresolved external symbol '___gxx_personality_v0'.
POLINK: error: Unresolved external symbol '__ZdlPv'.
POLINK: error: Unresolved external symbol '___cxa_pure_virtual'.
POLINK: error: Unresolved external symbol '__ZTVN10__cxxabiv120__si_class_type_infoE'.
POLINK: error: Unresolved external symbol '__ZTVN10__cxxabiv117__class_type_infoE'.
POLINK: fatal error: 20 unresolved external(s).
Muss ich etwas beachten wenn ich die Lib erstelle, bzw. ist das ein PB Fehler?
Gruß, Alex
Diese Symbole sehen nach GNU C++ aus und sind nicht kompatibel
zu MS VC++. Da PB die MSVCRT einbindet, wäre es besser mit einem
kompatiblem Compiler zu erstellen.
Wenn Du Dein Paket zu Verfügung stellst (hochladen oder private eMail),
kann ich Dir anbieten es mit MS VC++ oder Intel C++ zu erstellen.
Re: Statische Library einbinden [Google Snappy]
Verfasst: 30.06.2011 20:01
von DrShrek
Und wenn Du mir dein Packet hochlädst...erstelle ich dir eine fertige statische Lib inkl. Strukturen und Wrapper, ahnlich wie bei den Chipmunk4PB Wrapper (der ist auch von mir).
Ich habe mir ein Tool geschrieben das die Sourcen durchsucht und einen <LibName>4PB Wrapper teilautomatisiert erstellt.
Re: Statische Library einbinden [Google Snappy]
Verfasst: 30.06.2011 20:39
von Danilo
DrShrek hat geschrieben:Und wenn Du mir dein Packet hochlädst...erstelle ich dir eine fertige statische Lib inkl. Strukturen und Wrapper, ahnlich wie bei den Chipmunk4PB Wrapper (der ist auch von mir).
Ich habe mir ein Tool geschrieben das die Sourcen durchsucht und einen <LibName>4PB Wrapper teilautomatisiert erstellt.
Genau, übernimm Du das.
Den Source gibts auf der Seite, lässt sich kompilieren.
Beispiel:
Code: Alles auswählen
ImportC "Snappy.lib"
snappy_compress(*pIn,len,*pOut,*compressedLength)
EndImport
A$ = "Hallo Welt"
B$ = Space(100)
snappy_compress(@A$,Len(A$),@B$,@len)
Beispiel 2, String packen und wieder entpacken:
Code: Alles auswählen
ImportC "Snappy.lib"
snappy_compress (*input,input_length.i,*compressed,*compressed_length.Integer)
snappy_uncompress(*compressed,compressed_length.i,*uncompressed,*uncompressed_length.Integer)
snappy_max_compressed_length(source_length.i)
snappy_uncompressed_length(*compressed,compressed_length.i,*result.Integer)
snappy_validate_compressed_buffer(*compressed,compressed_length.i)
EndImport
A$ = "Compress me, snappy! This is sooo cool!"
len.i = StringByteLength(A$)
required_len.i = snappy_max_compressed_length(len)
If OpenConsole()
PrintN("output start")
PrintN(Str(len))
PrintN(Str(required_len))
*buffer = AllocateMemory(required_len)
If *buffer
x = snappy_compress(@A$,len,*buffer,@required_len)
PrintN(Str(x))
x = snappy_uncompressed_length(*buffer,required_len,@result.Integer)
PrintN(Str(x))
PrintN(Str(result\i))
B$ = Space(result\i)
x = snappy_uncompress(*buffer,required_len,@B$,@result.Integer)
PrintN(Str(x))
PrintN(Str(result\i))
PrintN(B$)
EndIf
Input()
CloseConsole()
EndIf
Re: Statische Library einbinden [Google Snappy]
Verfasst: 02.07.2011 10:48
von Danilo
@cxAlex:
Hast Du es jetzt hinbekommen? Ich habe gerade folgendes gesehen:
Windows SDK for Windows 7 and .NET Framework 3.5 SP1
Released in August 2009, this SDK provides Windows 7 headers, libraries, documentation, samples,
and tools (including VS 2008 SP1 C++ compilers) to develop applications for Windows 7, Windows XP,
Windows Server 2003, Windows Vista, Windows Server 2008, and .NET Framework versions 2.0, 3.0, and 3.5 SP1.
It is available in ISO and Web setup form.
Download:
http://msdn.microsoft.com/de-de/windows/ff851942.aspx
Habs jetzt nicht überprüft, aber hab auch an anderen Stellen im Internet
gelesen, daß das SDK die C++ Compiler enthält.
Damit solltest Du dann snappy erstellen und nutzen können.
Bei mir gehts, nur werden dazu libcmt.lib und libcpmt.lib benötigt,
die ich nicht einfach weitergeben kann. In dem obigen SDK sollten
diese Libs enthalten sein, so daß Du Dir damit selbst C/C++ Libs
kompilieren kannst.
Ich habe auch mit MinGW & TDM-GCC alles mögliche probiert, aber
ohne Erfolg. Da die MS C++ Compiler im obigen SDK kostenlos sind,
sollte das eine gute Alternative sein.
EDIT:
Dort ist das aktuelle 'Windows SDK for Windows 7 and .NET Framework 4':
http://blogs.msdn.com/b/windowssdk/arch ... ork-4.aspx
Enthält die neueren VC++ 2010 Compiler (32 & 64-bit).